转载声明:文章来源https://www.cnblogs.com/peifengyang/p/11411022.html
1.相同点
A. 两者都是抽象类,都不能实例化。
B. interface实现类及abstrctclass的子类都必须要实现已经声明的抽象方法。
2. 不同点
A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
C. interface强调特定功能的实现,而abstractclass强调所属关系。
D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。而abstractclass的子类可以有选择地实现。
这个选择有两点含义:
一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。
二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。
E. abstract class是interface与Class的中介。
interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也不能声明实例变量。然而,interface却可以声明常量变量,并且在JDK中不难找出这种例子。但将常量变量放在interface中违背了其作为接口的作用而存在的宗旨,也混淆了interface与类的不同价值。如果的确需要,可以将其放在相应的abstractclass或Class中。
abstract class在interface及Class中起到了承上启下的作用。
一方面,abstract class是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。另外,它还可以定义自己的实例变量,以供子类通过继承来使用。
看了两遍,慢慢消化吸收知识点
收益匪浅啊
UI设计发展前景怎么样
在大学没有那么优秀的经历怎么办
我想咨询下,如果是做产品经理,考研可以考哪些相关专业
会计想转行学计算机或者电子信息工程类 目前觉得计算机可能就业好一点 但是不知道从哪开始学最好?
双非一本,荒废了三年,目前在准备考研冲211,但是现在计算机考研太难了,要是没考上的话估计也是找不到工作了,什么语言都学过一点,但是没有项目经历,只做过学校的一些小任务。我现在好焦虑,是努力考研还是从现在开始为找工作做准备,暑假开始还能在秋招中拿offer吗?
怎么没能早点看到你这篇文章呢
学习到了 感谢分享