Java系列學習(九)-多態

來源:互聯網
上載者:User

標籤:

1.final關鍵字

(1)最終的意思, 可以修飾類,方法,變數

(2)特點:

A:它修飾的類,不能被繼承

B:它修飾的方法,不能被重寫(覆蓋)

C:它修飾的變數,這個變數其實是一個常量

【擴充】

①字面量常量:“hello”,10 , true

②自訂常量:final int x = 10;

(3)final面試相關:

A:final修飾局部變數的問題

①基本類型:基本類型的值不能發生改變

②參考型別:參考型別的地址值不能改變,但是,該對象的堆記憶體的值是可以改變的

B:初始化時間:

①只能賦值一次

②常見的賦值

2.多態

(1)同一個對象在不同的時刻 體現出來得到不同狀態

(2)多態的前提:

A:有繼承 或者 實現關係

B:有方法重寫

C:有父類 或者 父介面引用指向子類對象

(3)多態的分類

A:具體類多態

B:抽象類別多態

C:介面多態

(4)多態中的成員訪問特點

A:成員變數

【編譯看左邊,運行看左邊】

B:構造方法

【子類的構造都會預設訪問父類構造】

建立子類對象的時候,會先訪問父類的構造方法,對父類的資料進行初始化

C:成員方法

【編譯看左邊,運行看右邊】

D:靜態方法

【編譯看左邊,運行看左邊】

E:為什嗎?

【因為成員方法有重寫,靜態方法與類相關】

(5)多態的好處

A:提高代碼的維護性(繼承體現)

B:提高代碼的擴充性(多態體現)

(6)多態的弊端:

父類不能使用子類的特有功能

表現:子可以當作父使用,父不能當作子使用

(7)多態中的轉型

A:向上轉型(從子到父)

【Person p = new Student()】

B:向下轉型(從父到子)

【Student s = (Student)p】

3.抽象類別

(1)舉個例子來理解抽象類別

貓和狗都是動物,根據繼承我們提取一個父類Animal,貓和狗都會叫,也就是它們的共性,

就可以在Animal類中定義,一個叫的方法。但是問題來了,

貓是喵喵叫,狗是汪汪叫,在父類的方法體,該如何寫。

我們可以在Animal中只定義了一個叫的方法,但沒有方法體,讓子類來實現具體的方法。

這裡這個沒有方法體的方法就叫做抽象方法,這個類就叫做抽象類別

(2)抽象類別的特點

A:抽象類別和抽象方法必須用關鍵字 abstract修飾

B:抽象類別中不一定有抽象方法,但是有抽象方法的類一定是抽象類別

C:抽象類別不能執行個體化,要靠子類來實現

D:抽象類別的子類

①是一個抽象類別

②是一個具體類,這個類必須重寫抽象類別的所有抽象方法

(3)抽象類別的成員特點:

A:成員變數

【有變數,有常量】

B:構造方法

【有構造方法】

C:成員方法

【有抽象,有非抽象】

D:舉例

(4)抽象類別的幾個小問題

A:抽象類別與構造方法,不能執行個體化,那麼構造方法有什麼用?

用於子類訪問父類資料的初始化

B:一個類如果沒有抽象方法,卻定義為抽象類別,有什麼用

為了不讓建立對象

C:abstract不能和哪些關鍵字共存

①final 衝突 

②private 衝突

③static 無意義

4.介面

(1)通過例子來理解介面

飛機和小鳥都會飛,但他們屬於不同的東西,所以不能用抽象類別,

但他們又都有 飛 這個功能,這個時候就可以考慮用介面了

(2)介面的特點:

A:介面用關鍵字interface修飾

B:類實現介面用implements修飾

C:介面不能執行個體化

D:介面的實作類別

①是一個抽象類別

②是一個具體類

(3)介面得到成員特點

A:成員變數

【只能是常量,預設修飾符:public static final】

B:構造方法

【沒有構造方法】

問:如果沒有父類,那實現介面的子類,怎麼初始化父類的成員

答:

C:成員方法

【只能是抽象的,預設修飾符public abstract】

(4)類與類,類與介面,介面與介面

A:類與類:繼承關係 ,只能單繼承,可以多層繼承

B:類與介面:實現關係,可以當實現,也可以多實現。並且還可以在繼承一個類的同事實現多個介面

C:介面與介面:繼承關係,可以單繼承,也可以多繼承

(5)什麼時候用抽象類別,什麼時候用介面

A:抽象類別 被繼承體現的是:xx is  a XX 的關係。抽象類別中定義的是該繼承體系的共性功能。

B:介面 被是實現體現的時候:xx like a XX 的關係。介面中定義的是該繼承體系的擴充功能。

Java系列學習(九)-多態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.