A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陌城 中级黑马   /  2016-2-28 22:45  /  1086 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

什么时候用abstract?interface呢?

6 个回复

倒序浏览
abstract class,是抽象类,interface是接口
共同点:两者都不可直接创建对象,interface类下,方法都是抽象的,abstract类里,也有抽象方法,或者不定义抽象方法(目的在于不让此类创建对象)两者都需要借助子类的方法去覆盖掉全部抽象内容,然后子类即可创建对象,覆盖不掉,子类也变成抽象类。
区别:接口是公开的,不可有私有方法或变量,抽象类可有,接口与接口可多继承,实现接口可多实现,而抽象类只可单继承;
abstract类中如果有抽象方法,那么在其子类中,即可用抽象类中的抽象方法命名一个函数,覆盖掉父类的抽象方法,这样,子类即可创建对象,也实现了对抽象方法的覆盖和扩展,我反正就记住一点,抽象方法就是让你后面去添加内容,扩展内容的;
接口的好处就太多了,综其一点,扩展,实现功能,面向接口编程时代来临了,嘿嘿,个人理解,仅供参考。

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
接口中只能是抽象方法,不具体实现,是like a的关系;而抽象类中可以有普通方法,是is a的关系
回复 使用道具 举报
本帖最后由 fagug 于 2016-2-29 00:14 编辑

接口是一种特殊的抽象类,但是两者有些区别:
1、抽象类中有抽象方法,也有非抽象方法,可以定义变量。接口中定义常量,方法全是抽象方法和默认方法。
2、抽象的实例化需要子类继承,由于java的单继承限制,子类的方法大部分继承于抽象类。
      接口的实例化需要实现接口,子类可以在实现接口的同时还继承某一个父类,且可以实现多个接口,这样就大大扩展了子类的功能。一般建议拓展功能使用接口。

评分

参与人数 1黑马币 +1 收起 理由
洋葱头头 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
却别在于,接口必须全是抽象类且没有方法实体,抽象类完全是自己定义出来的,可以有具体方法(目前接口也可以定义具体的方法,这个不说了,一般没人这么用)
回复 使用道具 举报
liu1097974712 发表于 2016-2-28 23:49
abstract class,是抽象类,interface是接口
共同点:两者都不可直接创建对象,interface类下,方法都是抽 ...

谢谢 谢谢
回复 使用道具 举报
abstract class只能被继承一个,而一个class可以实现(implements)多个interface,所以能用interface就用interface吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马