黑马程序员技术交流社区

标题: 接口和抽象类的问题 [打印本页]

作者: fenzheng    时间: 2014-3-15 13:05
标题: 接口和抽象类的问题
abstract class和interface有什么区别,一个子类可以有多个父类吗?一个父类可以有多个子类吗?
作者: 遗忘的青春年华    时间: 2014-3-15 13:10
你说的子类和父类的关系涉及到继承和,实现接口,一个子类只能extends一个父类,但可以implements多个接口,而一个父类可以有多个子类,接口和接口之间也是继承的关系,子类继承父类或者实现接口,要重写父类的方法.
作者: osully    时间: 2014-3-15 14:14
abstract class抽象类,可以理解成一个普通类加了点抽象方法 ,这个类就是抽象类了.
而interface接口有规定,成员变量必是常量 , 方法必是抽象方法.
差别显而易见.

一个类只能继承一个父类,但能同时实现多个接口.
一个父类可以被多个子类继承.

作者: 李猛    时间: 2014-3-15 14:53
在java的继承体系中,继承都是单继承,也就是说一个子类只允许有一个父类,但是一个类可以被多个其他类继承。就接口而言,是允许多实现的,也就是一个类可以”继承“多个借口,但要注意的是接口实现的关键字是implements,不要混淆了,接口也可以继承接口,当然接口亦可以实现接口。通常情况下,接口与接口之间可以做到多继承,但是要特别指出是接口,也就是一个接口可以继承多个接口关键字是extends,别的什么类什么的是不可以的
作者: 何伟超    时间: 2014-3-15 15:48
抽象类中不一定全是抽象方法,但是接口里面的方法必然全是抽象的。
抽象类是一个类,只能够单继承。接口可以多继承。
作者: 王浩龙    时间: 2014-3-15 17:45
相面都说的很全了,我来增加一点。接口中的成员都有固定修饰符,常量:public static final 方法:public abstract 。只是我们平常写的时候把它省略了
作者: 乔钰博    时间: 2014-3-15 17:59
首先一个类只能有1个父类,但是可以实现多个接口。在abstract class中,可以定义自己的方法供子类使用,也可以定义抽象方法让子类去重写。而接口中所有的方法都是抽象的,实现这个接口的类必须实现这个接口中所有的方法。
关于什么时候用抽象类什么时候用接口LZ可以这样想:有两个类一个是 Cat类 一个是Dog类,他们都有方法 walk,这样就可以抽象出一个Animal的抽象类,在Animal中定义walk方法,这样Cat类和Dog类继承Animal类之后就能直接使用walk方法了。而如果Dog类中有pick方法, 还有一个机器人类 Robot也有pick方法这样可以抽象出一个接口,让Dog和Robot去实现这个接口,并且分别重写pick方法,因为Dog是用嘴,机器人是用机械臂。所以从这里可以看出,Cat和 Dog是Animal的一种,而Dog和Robot有同样的功能,也就是2L所说的is a和like a的关系了,希望能帮到你
作者: のソ夏末    时间: 2014-3-15 19:05
你可以这么理解!!
abstract class里面至少有一个抽象方法,否则不能称之为抽象;
对于interface而言,它里面成员变量和成员方法均为抽象,而且都有自己固定修饰符:
常量——public static final,方法——public abstract




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