abstract關鍵字


一、介紹

Abstract,即抽象。籠統的描述一類東西。

打個比方:

我們說車子都可以跑(run)。但有幾個輪子,怎么跑,對於不同的車有不同的結果。自行車2個輪子需要人踩着跑,三輪車有3個輪子可以人踩、也能電動,汽車發動機推動跑等等,那么“車”的表達為抽象的。

特點:

abstract可以修飾類,也可以修飾方法;
abstract修飾的類可以被繼承和實現,但是這個類本身不能被實例化;
抽象方法必須在抽象類中,抽象類中可以有非抽象的方法;
抽象類中可以沒有抽象方法,這樣做的作用是這個類不可以被實例化;
抽象類的子類在繼承抽象類后,必須把父類中的抽象方法重寫,否則子類也會自動變為抽象類;
抽象方法用於被子類繼承后重寫。即是父類的抽象方法是空的,必須由子類繼承之后在子類中由子類實現,這可以達到不同子類可以根據自己的特性來定義自己從父類繼承過來的抽象方法;
abstract不能與final關鍵字共存,因為final關鍵字修飾的類是不能被繼承的;
abstract不能與private關鍵字共存,因為私有的東西不能繼承;
abstract不能與static關鍵字共存,當static修飾方法時,該方法可以通過類名直接調用,而abstract修飾的抽象方法是不能被調用的;
abstract修飾的類中的普通方法可以通過該抽象類的子類直接調用。
抽象類與interface關鍵字:

當一個抽象類中的所有成員只有抽象方法時,便是一個接口,可以用關鍵字interface表示;
接口中的成員有兩種:1.全局常量  2.抽象方法 ;
接口中的權限必須是public,若沒寫public,會自動加上public;
接口中有抽象方法,因此接口也是抽象類,不可以實例化。所以其子類也必須覆蓋了接口中所有的抽象方法后,才能實例化,否則他也是一個抽象類。

 

二、優缺點

抽象類有什么好處呢?
1、由於抽象類不能被實例化,最大的好處就是通過方法的覆蓋來實現多態的屬性。也就是運行期綁定
2、抽象類將事物的共性的東西提取出來,由子類繼承去實現,代碼易擴展、易維護。

 

三、不能和下列關鍵字共存

abstract是抽象類的關鍵字,也是抽象方法聲明上必須加的修飾符,在定義方法上它一般不能與以下幾個關鍵字共存:

1、和static:
abstract  class  A {
public abtract static void method();
}
static修飾后可以直接類名調用方法,但是抽象方法沒有實現體,調用無意義;
 
2、和final:
final修飾的類不能被繼承,修飾的方法不能被重寫,修飾的成員變量只能為常量;但是繼承的子類要重寫這個抽象方法,所以會出現矛盾;
 
3、和private:
抽象方法是為了讓子類重寫並給定實現體,但是private修飾的方法只能本類訪問,所以矛盾。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM