黑马程序员技术交流社区

标题: JAVA的接口与抽象类 [打印本页]

作者: phil    时间: 2015-1-11 22:29
标题: JAVA的接口与抽象类
各位大神,能跟我说说接口与抽象类的联系与区别吗。
看了一下,感觉头大。。{:3_50:}

作者: kenfine    时间: 2015-1-11 23:30
第一个区别:抽象类只能被子类继承,子类只能继承一个父类,而一个类可以实现很多个接口
第二个区别:接口中的所有常量都是public static final,所有的方法都是public abstract,就算没写上也是默认的自动加上去,而抽象类可以没有抽象方法,目的是让该抽象类不能创建对象
其他的区别还在研究中....
作者: 探寻者    时间: 2015-1-11 23:38
接口是不可以创建对象的,因为有抽象方法,需要被子类实现,子类对接口中的方法全部实现后,子类才可以实例化,否则子类是一个抽象类。抽象类只能被子类继承,才能调用父类的方法。
作者: 大爱卓生    时间: 2015-1-11 23:41
Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以。 如 果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都一下子都得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个 新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。Java接口是定义混合类型的理想工具,混合类表明一个类不仅仅具有某个主类型的行为,而且具有其他的次要行为。两者相结合才能将优点发挥到极致!
作者: Imp_x    时间: 2015-1-12 00:51
kenfine 发表于 2015-1-11 23:30
第一个区别:抽象类只能被子类继承,子类只能继承一个父类,而一个类可以实现很多个接口
第二个区别:接口 ...

抽象类:
                成员变量:可以是变量,也可以是常量。
                构造方法:有构造方法。
                成员方法:可以是抽象方法,也可以是非抽象方法。
       
        接口:
                成员变量:只能是常量。
                          默认修饰符:public static final
                成员方法:只能是抽象方法。
                          默认修饰符:public abstract

作者: 446111220    时间: 2015-1-12 15:23
抽象类中不一定全是抽象方法,但是接口中必须全是抽象方法
作者: bluebloodant    时间: 2015-1-12 15:25
帮顶一下
作者: phil    时间: 2015-1-12 16:43
kenfine 发表于 2015-1-11 23:30
第一个区别:抽象类只能被子类继承,子类只能继承一个父类,而一个类可以实现很多个接口
第二个区别:接口 ...

谢谢,学习了。。
作者: phil    时间: 2015-1-12 16:44
大爱卓生 发表于 2015-1-11 23:41
Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以。  ...

学习了,谢谢!!
作者: jojo    时间: 2015-1-12 18:31
接口是一种特殊的抽象类,里面只有常量和抽象方法,接口可以被多实现,而抽象类只能被单继承
作者: 廖彬    时间: 2015-1-13 14:39
感谢各位大神的补充
作者: 王景阳    时间: 2015-1-13 14:43
接口里面的都是抽象方法,抽象类里面可以写非抽象方法
作者: 橘子你个哈密瓜    时间: 2015-1-13 15:07
其实还是为了区分类和接口,可以这样理解:之所以把抽象方法抽取出来定义成接口,是为了方便拓展
作者: hmyf150122    时间: 2015-1-13 17:59
kenfine 发表于 2015-1-11 23:30
第一个区别:抽象类只能被子类继承,子类只能继承一个父类,而一个类可以实现很多个接口
第二个区别:接口 ...

赞,很好
作者: 自信流云    时间: 2015-1-14 00:15
kenfine 发表于 2015-1-11 23:30
第一个区别:抽象类只能被子类继承,子类只能继承一个父类,而一个类可以实现很多个接口
第二个区别:接口 ...

抽象类也可以继承父类的。




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