1. 程式人生 > >抽象類(abstract class)和介面(interface)有什麼異同?

抽象類(abstract class)和介面(interface)有什麼異同?

不同:

抽象類:

1. 抽象類中可以定義構造器

2.可以有抽象方法和具體方法

3.介面中的成員全都是 public 的

4.抽象類中可以定義成員變數

5.有抽象方法的類必須被宣告為抽象類,而抽象類未必要有抽象方法

6.抽象類中可以包含靜態方法

7.一個類只能繼承一個抽象類

介面:

1.介面中不能定義構造器

2.方法全部都是抽象方法

3.抽象類中的成員可以是 private、預設、protected、protected、public

4.介面中定義的成員變數實際上都是常量

5.介面中不能有靜態方法

6.一個類可以實現多個介面

相同:

1.不能夠例項化

2.可以將抽象類和介面型別作為引用型別

3.一個類如果繼承了某個抽象類或者實現了某個介面都需要對其中的抽象方法全部進行實現,否則該類仍然需要被宣告為抽象類