黑马程序员技术交流社区

标题: 没能理解这句话:当一个类实现接口时,如果这个类是 [打印本页]

作者: 总统    时间: 2015-3-27 16:43
标题: 没能理解这句话:当一个类实现接口时,如果这个类是
各路英雄好汉,党和国家需要你们的时候到了,我有一个疑问,希望大家帮忙解释一下,举个例子说明一下,谢谢大家!

没能理解这句话:当一个类实现接口时,如果这个类是抽象类,则实现接口部分方法即可,否则需要实现接口中的所有方法。如下图


作者: 圣光忏悔    时间: 2015-3-27 16:58
一个实例化的类继承接口就要实现接口所有的方法,这样用的时候不需要那么多方法,就很累赘.
然后抽象类就不同了,可以不实现,也可以实现一部分,以后需要使用接口的方法的时候直接继承抽象类就可以了,这样,当只需要使用其中一个方法的时候就不需要重写全部方法了.
作者: 总统    时间: 2015-3-27 17:03
圣光忏悔 发表于 2015-3-27 16:58
一个实例化的类继承接口就要实现接口所有的方法,这样用的时候不需要那么多方法,就很累赘.
然后抽象类就不同 ...

可以举个例子吗?谢谢!
作者: 翰墨    时间: 2015-3-27 17:11
接口中定义的是常量和抽象方法
抽象类中可以有非抽象的方法,所以抽象类可以实现接口中的部分方法,抽象类不可以用new·建立对象
而对于非抽象子类实现接口,是为了实例化,如果没有全部实现抽象方法,那么就不能被子类实现
作者: 邓士林    时间: 2015-3-27 17:21
  1. interface Lock{
  2.         public void getLock();
  3.         public void setLock();
  4. }

  5. abstract class BigLock implements Lock{
  6.         //抽象类中选择要实现接口中的方法
  7.         public void getLock(){
  8.                 System.out.println("实现getLock方法");
  9.         }
  10. }
复制代码
具体原因就是抽象类中允许有抽象方法的存在,所以可以实现或部分实现接口中的方法。
用处:
一般如果我们接口中的方法过多,而我们的类要继承该接口,按照语法规定,我们岂不是要实现接口中所有的方法,接口中的方法有很多又不是需要的,都实现会让代码缺乏可读性以及违背面向对象的规则。所以会采用一个中间类来对接口中的方法进行过渡。然后我们的类继承此过度类来实现方法。这就是传说中的适配器模式。哈哈

作者: 总统    时间: 2015-3-27 17:25
邓士林 发表于 2015-3-27 17:21
具体原因就是抽象类中允许有抽象方法的存在,所以可以实现或部分实现接口中的方法。
用处:
一般如果我们接 ...

明白了,谢谢!如果直接实现接口,如果接口里面有很多不需要用到的方法,那就没必要。因些通过一个第三方抽象类来实现接口中需要的方法,再继承第三方抽象类,这样就可以用到接口里众多方法中我们需要的,是这样吗?我现在理解是这样,嘻嘻!非常 谢谢你啦!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2