Java中抽象類和介面中均不能定義靜態的抽象方法

2021-08-20 21:09:46 字數 473 閱讀 7537

抽象類是不能例項化的,即不能被分配記憶體;而static修飾的方法在類例項化之前就已經別分配了記憶體,這樣一來矛盾就出現了:抽象類不能被分配記憶體,而static方法必須被分配記憶體。所以抽象類中不能有靜態的抽象方法。

定義抽象方法的目的是重寫此方法,但如果定義成靜態方法就不能被重寫。

介面中的方法也只能是 public abstract修飾的,不能加上static。介面是不能例項化的,即不能被分配記憶體,而static修飾的方法在類例項化之前就已經別分配了記憶體,這樣一來矛盾就出現了:介面不能被分配記憶體,而static方法必須被分配記憶體。所以介面中不能有靜態的抽象方法。

靜態static是屬於位元組碼的。

乙個抽象類可以沒有抽象方法,使用abstract只是為了不被例項化。

以上兩點可以說明,靜態方法只要有位元組碼存在就可以執行,所以抽象類中可以有靜態方法。

因為靜態屬於位元組碼,不需要物件就可以執行;而抽象方法沒有方法體,執行沒有意義,所以不能共存。

java中介面和抽象類

包含抽象方法的類叫做抽象類。如果乙個類包含乙個或多個抽象方法,該類必須被限定為抽象的。如果從乙個抽象類繼承,並想建立改新類的物件,那麼就必須為基類中的所有抽象方法提供方法定義。如果不這樣做 可以選擇不做 那麼匯出類便也是抽象類,並且編譯器會強制我們使用abstract關鍵字來限定這個類。建立抽象類和...

Java中的抽象類和介面

注意 抽象類不能被例項化。抽象類不一定包含abstract方法 可以有實現的方法 一旦包含abstract方法,則這個類必須宣告為abstract。抽象方法不能有主體。當乙個類繼承抽象類,需要將抽象類中的所有抽象方法全部實現。注意 介面不能被例項化。介面中所有方法不能有主體。乙個子類只能繼承乙個父類...

java中的抽象類和介面

一 抽象類 1.1定義 抽象類是用來捕捉子類通用特性的。它不能被例項化,只能被用作子類的超類,使用abstract修飾符來定義。1.2抽象類和抽象方法 有抽象方法的類只能被定義成抽象類,抽象類裡可以沒有抽象方法 抽象類和抽象方法都必須使用abstract修飾符來修飾,抽象方法不能有方法體 抽象類不能...