標籤:
JAVA:
1、普通的JAVA類也能夠在CLASS前加ABSTRACT聲明為抽象,僅僅只是此時的該類不再能夠執行個體化。
2、假設一個類裡有一個以上的抽象方法。則該類必須聲明為抽象類別。該方法也必須聲明為抽象。
3、抽象類別不能被執行個體化。但不代表它不能夠有建構函式。抽象類別能夠有建構函式,備繼承類擴充用 abstract 修飾的類是抽象類別。
抽象類別是不完整的,而且它僅僅能用作基類。它與非抽象類別的不同: 1、抽象類別不能直接執行個體化。而且對抽象類別使用 new 運算子是編譯時間錯誤。儘管一些變數和值在編譯時間的類型能夠是抽象的。可是這種變數和值必須或者為 null,或者含有對非抽象類別的執行個體的引用(此非抽象類別是從抽象類別派生的)。 2、同意(但不要求)抽象類別包括抽象成員。 3、抽象類別不能被密封。
當Congo抽象類別派生非抽象類別時,這些非抽象類別必須詳細實現所繼承的全部抽象成員。從而重寫哪些抽象成員。在下邊的示範範例中: abstract class A{ public abstract void F();} abstract class B: A{ public void G() {}} class C: B{ public override void F() { // actual implementation of F }} 抽象類別 A 引入抽象方法 F。類 B 引入還有一個方法 G,但因為它不提供 F 的實現,B 也必須聲明為抽象類別。類 C 重寫 F,並提供一個詳細實現。因為 C 中沒有了抽象成員,因此能夠(但並不是必須)將 C 聲明為非抽象類別。 抽象類別與介面緊密相關。
然介面又比抽象類別更抽象,這主要體如今它們的區別上:1)類能夠實現無限個介面,但僅能從一個抽象(或不論什麼其它類型)類繼承。從抽象類別派生的類仍可實現介面。從而得出介面是用來解決多重繼承問題的。2)抽象類別其中能夠存在非抽象的方法。可介面不能且它裡面的方法僅僅是一個聲明必須用public來修飾沒有詳細實現的方法。3)抽象類別中的成員變數能夠被不同的修飾符來修飾。可介面中的成員變數預設的都是靜態常量(static final)。4)這一點也是最重要的一點本質的一點"抽象類別是對象的抽象。然介面是一種行為規範"。 以上是它們本身的異同,以下再來從實際應用講講它們的異同!
不同之處: 定義 抽象類別表示該類中可能已經有一些方法的詳細定義,可是介面就只只能定義各個方法的介面(方法名,參數列表。傳回型別),並不關心詳細細節。 使用方法 1)在繼承抽象類別時,必須覆蓋該類中的每一個抽象方法。而每一個已實現的方法必須和抽象類別中指定的方法一樣,接收同樣數目和類型的參數。具有同樣的傳回值。這一點與介面同樣。
2)當父類已有實際功能的方法時,該方法在子類中能夠不必實現,直接引用的方法,子類也能夠重寫該父類的方法(繼承的概念)。
3)而實現 (implement)一個介面(interface)的時候。是一定要實現介面中所定義的全部方法,而不可遺漏不論什麼一個。
4)另外,抽象類別不能產生對象的。但能夠由它的實作類別來聲明對象。
鑒於此,當實現一個介面。我們經常寫一個抽象類別,要實現介面所需要的某些子類通用方法,當遵循不同子類的準備,你可以繼承抽象類別使用,在消除了麻煩,必須實現每個的共同的處理。
java抽象類別