java中abstract和interface的区别和相同点

08月23日 收藏 0 评论 9 java开发

java中abstract和interface的区别和相同点

转载声明:文章来源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是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。另外,它还可以定义自己的实例变量,以供子类通过继承来使用。

C 9条回复 评论
几勺奶酪

看了两遍,慢慢消化吸收知识点

发表于 2023-09-05 09:28:29
0 0
地瓜土到掉渣

收益匪浅啊

发表于 2022-11-23 23:00:00
0 0
波风小蒙

UI设计发展前景怎么样

发表于 2022-07-20 23:00:00
0 0
几勺奶酪

在大学没有那么优秀的经历怎么办

发表于 2021-11-06 21:00:00
0 0
Yolk

我想咨询下,如果是做产品经理,考研可以考哪些相关专业

发表于 2021-09-14 07:55:00
0 0
琼华

会计想转行学计算机或者电子信息工程类 目前觉得计算机可能就业好一点 但是不知道从哪开始学最好?

发表于 2021-09-13 20:35:00
0 0
老瑭

双非一本,荒废了三年,目前在准备考研冲211,但是现在计算机考研太难了,要是没考上的话估计也是找不到工作了,什么语言都学过一点,但是没有项目经历,只做过学校的一些小任务。我现在好焦虑,是努力考研还是从现在开始为找工作做准备,暑假开始还能在秋招中拿offer吗?

发表于 2021-09-13 20:30:00
0 0
月夜御风

怎么没能早点看到你这篇文章呢

发表于 2021-09-12 14:10:00
0 0
旺仔扣扣新

学习到了 感谢分享

发表于 2021-09-11 22:55:00
0 0