黑马程序员技术交流社区

标题: 接口的子类必须实现接口中所有方法吗? [打印本页]

作者: 落叶归根    时间: 2013-9-8 20:55
标题: 接口的子类必须实现接口中所有方法吗?
本帖最后由 落叶归根 于 2013-9-10 09:30 编辑

      接口的子类必须实现接口中的所有方法?    如果一个类实现接口没有实现其中的全部方法  那么这个类是抽象类  为什么要全部实现其中的方法。
作者: Bad_Boy    时间: 2013-9-8 21:15
不实现接口的全部方法就是抽象类,就不能创建实例,我们定义一个类实现接口就是为了创建实例来用的
作者: hmwudizl91zl    时间: 2013-9-8 21:16
这个其实就是接口和抽象类的区别之一,
接口只能被单继承,也就是一个类只能继承一个接口
抽象类就没有这个限定,可以继承多个抽象类,而且不一定要实现里面所有的方法
主要看你具体看你怎末用了。
至于为什么实现一个接口必须要实现接口里面所有的方法?
好比你内存条插入插槽你你难道只插一部分就能用了还是要全部插进去才能用呢?道理其实是一样的!~
作者: 爱上这格调    时间: 2013-9-8 21:18
是要全部实现的吧  我理解是接口中的方法是要实现它的类所必须要具备的方法,就好像生物必须要具有生命这个方法,如果一个对象是生物那他就必须实现具有生命的方法,接口中的方法是要实现他的子类所必须具备的方法,所以要全部实现
作者: jadeite    时间: 2013-9-8 21:22
hmwudizl91zl 发表于 2013-9-8 21:16
这个其实就是接口和抽象类的区别之一,
接口只能被单继承,也就是一个类只能继承一个接口
抽象类就没有这个 ...

抽象类用的是extends ,接口是implements;亲不要误导人啊!

作者: jadeite    时间: 2013-9-8 21:25

接口和抽象类的区别:
共性:都是不断抽取出来的抽象概念;
区别:
1)抽象类体现继承关系,一个类只能单继承;
    接口体现是实现关系,一个类可以多实现;
2)抽象是继承,接口是实现;
3)抽象类定义基本共性功能;接口定义对象扩展功能;
4)抽象类可以定义非抽象方法供子类使用;接口的方法都是抽象的,接口中的成员都有固定的修饰符 public static final

作者: jadeite    时间: 2013-9-8 21:25
本帖最后由 jadeite 于 2013-9-8 21:27 编辑

接口和抽象类的区别:
共性:都是不断抽取出来的抽象概念;
区别:
1)抽象类体现继承关系,一个类只能单继承;
    接口体现是实现关系,一个类可以多实现;
2)抽象是继承,接口是实现;
3)抽象类定义基本共性功能;接口定义对象扩展功能;
4)抽象类可以定义非抽象方法供子类使用;接口的方法都是抽象的,接口中的成员都有固定的修饰符 public static final

作者: ld5128702    时间: 2013-9-8 21:28
是的,因为接口中的方法全都是抽象方法,接口本身可以理解为一个特殊的抽象类,其他的类去实现接口,就
必须覆写所有的抽象方法,如果没有复写所有的抽象方法,就意味着这个类继承了接口的一些抽象方法,就是一个抽象类,其实,这本身就是一种设计模式,就是说如果你后面不需要全部的接口中的方法,你的中间就可以用一个抽象类去实现接口,然后然后将不需要的抽象方法如:接口中是public void show();,你可以再抽象类中:public void show(){}然后,其他需要用到的抽象方法就不用去覆写,后面子类再覆写就可以了,这就是适配器模式
作者: 杨伟斌    时间: 2013-9-8 22:08
创建一个类就是为了要使用,一般情况下使用就必须得创建对象,要创建对象首先抽象类是不行的。如果一个实现了接口的子类没有覆盖其中的全部方法,那么这个类就是抽象类,就不能创建对象。因此就没有是实现接口的价值了。
作者: 陶智第    时间: 2013-9-8 22:40
当在现实生活中我们遇到一类比较模糊、不清楚它是干嘛的时候,我们就可以抽象的描述它。比如电脑
当一个类里面全都是抽象的方法时,我们可以把它定义为接口。例如电脑上的各种插槽
当我们具体知道那些方法是干什么时,我们可以用子类来实现这些方法。

当然子类是一定要全部实现接口里方法的
作者: joechen    时间: 2013-9-8 22:54
hmwudizl91zl 发表于 2013-9-8 21:16
这个其实就是接口和抽象类的区别之一,
接口只能被单继承,也就是一个类只能继承一个接口
抽象类就没有这个 ...

不是单继承多实现的吗?
作者: 杨增坤    时间: 2013-9-9 20:02
楼主,您好!

如果您的问题解决了,请把您问题的未解决更改为已解决

谢谢合作!






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