1. 程式人生 > >抽象類(abstract class)和介面(interface)的區別

抽象類(abstract class)和介面(interface)的區別

在介紹兩者的區別的時候,需要先了解一下兩者的定義:

抽象類:簡單粗暴的描述是包含抽象方法的類,但是這樣定義並不準確,因為抽象類也可以不含有抽象方法,即使用abstract修飾的類必為抽象類,一定要注意:一個類如果含有抽象方法,則該類一定為抽象類;但是抽象類並不一定含有抽象方法。抽象類是不能被例項化的。

介面:泛指供其他類呼叫的方法或者函式。介面中的方法均為抽象方法,介面也是不能被例項化的。

抽象類和介面的區別:

1.抽象類中可有構造方法,而介面是沒有構造方法的。

2.抽象類中可以有普通的成員變數的,而介面中是沒有普通的成員變數的。

3.抽象類中可以含有非抽象的普通方法,而介面中的方法必須為抽象方法,不能含有非抽象的普通方法。

4.抽象類中的抽象方法的訪問型別可以為public,protected,而介面中的抽象方法的訪問型別只能為public abstract。

5.抽象類中可以含有靜態方法,而介面中則沒有靜態方法。

6.抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數可以被任意的訪問型別修飾,但是介面中的靜態成員變數只能被public static final修飾。

7.一個類可以實現很多介面,但是隻能繼承一個抽象類。

抽象類和介面的相同點:

1.都不能被例項化。

2.介面的實現類和抽象類的子類都只有實現了其中的方法後才能被例項化。