繼承和多態

繼承是面向對象方法中的一個重要概念。特殊類擁有一般類的屬性和操作。稱為特殊類對一般類的繼承。繼承是一種由已有類來擴展新類的機制,也是面向對象技術可提高軟件開發效率的一個重要原因。

多態是指一不同方式響應同一方法調用的能力。

在子類中,不能直接訪問從父類中 繼承的私有成員和方法。但可以通過調用從高父類繼承的公有方法(這個方法返回了父類中的私有變量和方法)達到間接調用的目的

對于可直接訪問的靜態成員變量,父類、子類、父類對象及子類對象均共享同一個靜態變量。

子類的構造方法:

在類的繼承層次結構中,父類和子類都有字節構造方法。但子類不會繼承父類的構造方法。但子類對象中既包含了從直接父類繼承類的成員變量,也包含了它新定義的成員變量,為了構造一個子類對象,必須對所有這些變量進行正確的初始話。在調用子類的構造方法的時候,子類的構造方法又會在不顯示調用父類構造方法的情況下隱式調用父類的默認構造方法(即什么參數都沒有的那種)。當然父類構造方法有參數或者怎樣,你可以用super()顯示調用父類的構造方法,但這個方法必須在子類構造方法的第一句。

方法的覆蓋和成員變量的隱藏

方法的覆蓋:在子類中定義一個與父類中的方法具有相同聲明的實例成員方法叫做子類成員方法對哦父類方法的覆蓋,簡稱覆蓋。

成員變量的隱藏:子類中定義了與父類中相同的成員變量時。這時,在子類對象中,雖然從父類繼承的成員變量仍然存在,但是已經無法直接訪問它了,必須使用super關鍵字或父類的一個應用調用它了。這就是成員變量的隱藏

注意一點:如果有兩個類,一個類來自父類,一個類來自子類。然后一個變量來自父類,在子類中也有同名的變量。那么在子類調用繼承來自父類的方法時,使用的仍然是父類的那個變量。而在子類中調用子類定義的方法,使用同名變量來自子類定義的變量。

父類變量引用子類對象:通過父類引用變量引用子類對象時,父類引用變量只能調用子類對象中從父類所繼承來的或重定義的方法,調用子類對象中自己額外定義的方法會導致編譯錯誤。

instanceof運算符用來判斷左邊的表達式的對象是否屬于右邊類的子類或同一個類。是則返回true否則false

final關鍵字

final關鍵字可用來修飾類、方法、變量

修飾類:當用final關鍵字修飾某個類時,這是,該類就不能被其他類繼承。通常我們也將final類稱為終結類

修飾方法:用final關鍵字修飾某個方法時,則該方法不能被子類中的方法進行覆蓋。

修飾變量:final關鍵字修飾的變量只能被賦值一次,賦值以后,該值不能被再改變

抽象類和接口:

抽象類要在類名前加一個abstract修飾。另外類中必須有[f訪問修飾符] abstract 返回類型 方法名稱(【參數列表】);定義抽象方法是沒有實體的。抽象類是不可以實例化的。

從一個抽象父類中派生子類時,有兩種情況。第一種情況,只要沒把所有的抽象方法具體實現完,該類還是抽象類。第二種是全部實現完的類,這個類才可以被實例化。

在一個抽象類中也可以有成員變量;另外在一個抽象類中也可以有不是abstract修飾的成員方法。

定義接口

[修飾符] interface 接口名 [extends 接口名]{

static final 數據類型 常量名=常量數據;

返回值類型 方法名(【參數】);

接口中所有方法和屬性都只能用public修飾。所以public可以省去,另外接口中所有方法都要求是abstract所以也可以不寫。

接口的實現:implements關鍵字

關于繼承多態:與繼承有關的多態:在一個類的繼承體系層次中,如果一個子類覆蓋了父類中的某個實例方法,當我們用一個引用了子類對象的父類變量調用被覆蓋的方法時。此時,程序執行的是具體的子類對象中的方法。

關于接口的多態:與接口有關的特性是指用一個接口類型的變量引用實現了該接口的類的對象時,調用某個接口方法時,是執行的引用的那個對象里具體的方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 繼承和多態 1. 繼承的優缺點 優點:(1)子類可以靈活地改變父類中的已有方法;(2)能夠最大限度的實現代碼重用。...
    MinoyJet閱讀 666評論 0 0
  • 繼承是Java面向對象的一種表現。利用繼承可以創建公共屬性的父類,然后根據各個子類的不同特性創建各個不同屬性。 注...
    起個什么呢稱呢閱讀 1,088評論 0 1
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,778評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,691評論 0 11
  • 當你提出了這個問題的時候,就已經走在解決問題的路上了。 01 當關系陷入僵局,人們會有不同的態度: 1.無視它。 ...
    馬斯洛笛子閱讀 979評論 0 2