接口详解.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对初学者来说,接口不是很好理解。现将某高手的一篇文章贴出来,共大家分享! 我们来看一个类 class A { private int a; public int getA() { return a; } } 这个类的属性是私有的,外界不能访问,而外界可以通过公有方法来访问这个类。我们说一个类的公有方 法就是这个类的对外接口。通常 一个类的属性都是私有的,方法大多是公有的。外界只能过个这些公有方法来访问类。这也是Java封装性 的体现。如果一个类没有公有属性, 也没有公有方法,这个类就是无法使用的类了。所以我们需要为一个类提供对外接口。 一个类中的方法,不只是说明了它要“做什么”,而且方法的内容也说明了“怎么做”。打个不太恰当的 例子,一个杀人方法。从名字上看,你知道了“做什么”,但没有办法看到“怎么做”。而方法的内容说 明了“怎么做”。 class killer { private String name; private int age; private String phone; private String addr; ...... public void kill(Person p) { Qiang qiang = new Qiang(ak47); qiang.fire(p); } } 这个类的kill方法内容说明了杀人的过程。如果你不想用这种方式杀人。因为你很BT,你想用毒药杀人。 那么这个类的内容就需要改。但是,还有很多其它的“客户”,需要用不同的方式杀人。怎么办呢?一个 很好的办法就是,我们只定义“做什么”,而不定义“怎么做”。 interface Killer { public void kill(Person p); } 接口说明了“做什么”,而实现这个接口的类,也就是实现类需要说明“怎么做”。 class Killer1 implements Killer { public void kill(Person p) { Qiang qiang = new Qiang(ak47); qiang.fire(p); } } class Killer2 implements Killer { public void kill(Person p) { Bane bane = new Bane(); p.eat(bane); } } public class Test { public static void main(String[] args) { Killer jingKe = new Killer1(); Person yingZheng = new Person(); jingKe.kill(yingZheng); } } 接口可以把“做什么”和“怎么做”分离开来。这给Java带来了很多好处。虽然代码量增加了,可我们的 程序的可维护性加强了。我们的程序是可以拆分的。就象电脑一样,可以拆分成很多组件。我一直在想, 如果我的MP3耳机可以拆分就好了,那样在耳机只坏掉一个的时候就不用重新买一个了。 不过上面的例子看不到什么太大的好处。你可能会说,如果你的目的是为了不修改代码,那么,如果我想 使用Killer2来完成任务,还是需要修改main方法为:Killer jingKe = new Killer2();。没有错, 不过你可以通过一个工厂来完成上面的任务。也就是说,不通过new语句来获得Killer对象,而是通过工 厂来获得Killer对象。 public class KillerFactory { public static killer getKiller() { return new Killer1(); } public static Killer getKiller(String path) throws Exception { Properties prop = new Properties(); prop.load(new FileInputStream(path)); String className = prop.getProperty(killer); Class clazz = Class.forName(className); return (Killer)clazz.newInstance(); } } 代码确实增加了很多,可是这对后期的系统维修和系统升级带来了很多好处。 水龙头与出水管的关系,我们需要把水龙头安装到出水管上。如果有一天我们需要更换水龙头时,只需要 把老的水龙头拆卸下来,把新的水龙头安装到出水管上即可。如果水龙头与出水管是一体的,就是无法拆 卸的怎么办

文档评论(0)

word.ppt文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档