介面為什麼不能有建構函式

2021-10-05 19:25:13 字數 439 閱讀 1298

下面比較一下兩者的語法區別:

1.抽象類可以有構造方法,介面中不能有構造方法。

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

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

抽象類中的抽象方法的訪問型別可以是public,protected和(預設型別,雖然

eclipse下不報錯,但應該也不行),但介面中的抽象方法只能是public型別的,並且預設即為public abstract型別。

抽象類中可以包含靜態方法,介面中不能包含靜態方法

抽象類和介面中都可以包含靜態成員變數,抽象類中的靜態成員變數的訪問型別可以任意,但介面中定義的變數只能是public static final型別,並且預設即為public static final型別。

乙個類可以實現多個介面,但只能繼承乙個抽象類

在C 中,為什麼建構函式不能有返回值?

1 假設有乙個類c,有如下定義 class c c int i x i private int x 如果c的建構函式可以有返回值,比如int int c x 0 那麼下列 會發生什麼事呢?c c c 此時c.x 1!很明顯,c 呼叫了c的無引數建構函式。該建構函式返回int值1。恰好c有乙個但引數建...

建構函式為什麼不能是虛建構函式

class a private int value 為什麼建構函式不能是虛函式呢?這裡你需要知道乙個概念,那就是虛函式表vtbl,每乙個擁有虛成員函式的類都有乙個指向虛函式表的指標。物件通過虛函式表裡儲存的虛函式位址來呼叫虛函式。那虛函式表指標是什麼時候初始化的呢?當然是建構函式。當我們通過new來...

為什麼建構函式不能為虛函式

1,從儲存空間角度 虛函式對應乙個vtable,這大家都知道,可是這個vtable其實是儲存在物件的記憶體空間的。問題出來了,如果建構函式是虛的,就需要通過 vtable來呼叫,可是物件還沒有例項化,也就是記憶體空間還沒有,無法找到vtable,所以建構函式不能是虛函式。2,從使用角度 虛函式主要用...