源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Java基础教程之实现接口

  • 时间:2022-03-04 01:29 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java基础教程之实现接口
在[url=http://www.1sucai.cn/article/54549.htm]封装与接口[/url]中,private关键字封装了对象的内部成员。经过封装,产品隐藏了内部细节,只提供给用户接口(interface)。 接口是非常有用的概念,可以辅助我们的抽象思考。在现实生活中,当我们想起某个用具的时候,往往想到的是该用具的功能性接口。比如杯子,我们想到加水和喝水的可能性,高于想到杯子的材质和价格。也就是说,一定程度上,用具的接口等同于用具本身。内部细节则在思考过程中被摒弃。 [img]http://files.jb51.net/file_images/article/201408/2014831164142363.jpg?2014731164156[/img] a cup in mind 在public和private的封装机制,我们实际上同时定义了类和接口,类和接口混合在一起。Java还提供了interface这一语法。这一语法将接口从类的具体定义中剥离出来,构成一个独立的主体。 [b]interface[/b] 以杯子为例,定义一个杯子的接口:
[url=http://www.1sucai.cn/article/54549.htm]封装与接口[/url]中讲到的,一个类的public方法构成了接口。所以,所有出现在interface中的方法都默认为public。 我们可以在一个类的定义中实施接口,比如下面的MusicCup (可以播放音乐的杯子):
[u]复制代码[/u] 代码如下:
class MusicCup implements Cup {     public void addWater(int w)     {         this.water = this.water + w;     }     public void drinkWater(int w)     {         this.water = this.water - w;     }     private int water = 0; }
我们用implements关键字来实施interface。一旦在类中实施了某个interface,必须在该类中定义interface的所有方法(addWater()和drinkWater())。类中的方法需要与interface中的方法原型相符。否则,Java将报错。 在类中可以定义interface没有提及的其他public方法。也就是说,interface规定一个必须要实施的最小接口。比如下面的waterContent()方法就没有在Cup接口中规定原型:
[u]复制代码[/u] 代码如下:
class MusicCup implements Cup {     public void addWater(int w)     {         this.water = this.water + w;     }     public void drinkWater(int w)     {         this.water = this.water - w;     }     public int waterContent()     {         return this.water;     }     private int water = 0; }
[b]分离接口的意义[/b] 我们使用了interface,但这个interface并没有减少我们定义类时的工作量。我们依然要像之前一样,具体的编写类。我们甚至于要更加小心,不能违反了interface的规定。既然如此,我们为什么要使用interface呢? 事实上,interface就像是行业标准。一个工厂(类)可以采纳行业标准 (implement interface),也可以不采纳行业标准。但是,一个采纳了行业标准的产品将有下面的好处: 1.更高质量: 没有加水功能的杯子不符合标准。 2.更容易推广: 正如电脑上的USB接口一样,下游产品可以更容易衔接。 如果我们已经有一个Java程序,用于处理符合Cup接口的对象,比如领小朋友喝水。那么,只要我们确定,我们给小朋友的杯子(对象)实施了Cup接口,就可以确保小朋友可以执行喝水这个动作了。至于这个杯子(对象)是如何具体定义喝水这个动作的,我们就可以留给相应的类自行决定 (比如用吸管喝水,或者开一个小口喝水)。 在计算机科学中,接口是很重要的概念。比如任何提供UNIX接口的操作系统都可以称作UNIX系统。Linux,Mac OS,Solaris都是UNIX系统,它们提供相似的接口。但是,各个系统的具体实施(源代码)互不相同。Linux是开源的,你可以查看它的每一行代码,但你还是不知道如何去编写一个Solaris系统。 [img]http://files.jb51.net/file_images/article/201408/2014831164328554.jpg?2014731164342[/img] 相同的UNIX接口 [b]实施多个接口[/b] 一个类可以实施不止一个的interface。比如我们有下面一个interface:
[u]复制代码[/u] 代码如下:
interface MusicPlayer {     void play(); }
我们再来考虑MusicCup类。MusicCup可以看做播放器和杯子的混合体。 [img]http://files.jb51.net/file_images/article/201408/2014831164408469.jpg?2014731164419[/img] 所以MusicCup应该具备两套接口,即同时实施MusicPlayer接口和Cup接口:
[u]复制代码[/u] 代码如下:
class MusicCup implements MusicPlayer, Cup {     public void addWater(int w)     {         this.water = this.water + w;     }     public void drinkWater(int w)     {         this.water = this.water - w;     }     public void play()     {         System.out.println("la...la...la");     }     private int water = 0; }
最后,可以尝试将本文中的interface和类定义放在同一个文件中,并编写Test类,运行一下。 [b]总结[/b] interface, method stereotype, public implements interface implements interface1, interface2
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部