黑马程序员技术交流社区

标题: 关于抽象类和接口的一点小疑惑 [打印本页]

作者: 李文帅    时间: 2013-10-23 22:44
标题: 关于抽象类和接口的一点小疑惑
本帖最后由 李文帅 于 2013-10-24 16:27 编辑

听毕老师讲了抽象类和接口,抽象类和接口都可以包含抽象方法,那么它们有什么区别?使用时该如何选择?
作者: 寻丶丶觅    时间: 2013-10-23 22:50
抽象类里面包含抽象方法,需要被覆盖,但是也可以有具体方法。
接口中方法均为抽象的,并有固定的修饰词public abstract ;
接口中变量均为常量,固定修饰词public static final;
实现接口必须覆盖其全部方法。
作者: 寻丶丶觅    时间: 2013-10-23 23:01
抽象类因为是被继承,可以定义成员的基本属性,定义的抽象方法为子类的共有特性。
比如定义抽象类为动物,子类都有吃的特性。但吃的方法不一样。比如猫吃鱼,狗吃骨头。就可以在父类定义一个吃的抽象方法。子类都要去实现该方法.
但子类他们都有走路的方法,并且走路方法是一样的。这个时候父类就可以定义走路这个方法。而接口是不能的,所有方法都是抽象的
作者: hyz123456    时间: 2013-10-23 23:11
本帖最后由 hyz123456 于 2013-10-23 23:19 编辑

1.抽象类中可以包含抽象方法也可以包含非抽象方法,而接口中只有抽象方法。
2.抽象类中可以有构造函数,而接口中不存在构造函数。
3.接口中的方法没有方法体,需要在子类实现中将方法覆盖(override)。
4.在java中接口跟类是两个并行的概念,所有类都继承Object,但接口是接口,不继承Object,接口只能继承某一接口,但某个类可以实现接口(多个接口)。

      类与类之间不存在多继承,但是类和接口、接口和接口之间可以实现多实现(多继承),
这是java中多继承的一种特例,在使用抽象类或者接口的时候要注意他们的这个特性。
在一个类要继承多个父类的时候最好弄成实现的形式,这样能提高代码的复用性。
        


作者: 斗胆潇洒    时间: 2013-10-23 23:15
我的笔记:

a.jpg (32.38 KB, 下载次数: 50)

a.jpg

作者: 1961993790    时间: 2013-10-24 09:55
抽象类和接口的异同点:
相同点:
都是不断向上抽取而来的。
不同点:
1,抽象类需要被继承,而且只能单继承。
接口需要被实现,而且可以多实现。
2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。
接口中只能定义抽象方法,必须由子类去实现。
3,抽象类的继承,是is a关系,在定义该体系的基本共性内容。
接口的实现是  like a  关系,在定义体系额外功能。
希望对您有帮助,这是我的学习笔记。
作者: 李文帅    时间: 2013-10-24 16:27
非常感谢大家的解释,我理解了!!!{:soso_e121:}




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