Java中多態、抽象類別和介面

來源:互聯網
上載者:User

標籤:

1:final關鍵字(掌握)
(1)是最終的意思,可以修飾類,方法,變數。
(2)特點:
A:它修飾的類,不能被繼承。
B:它修飾的方法,不能被重寫。
C:它修飾的變數,是一個常量。
(3)面試相關:
A:局部變數
a:基本類型 值不能發生改變
b:參考型別 地址值不能發生改變,但是對象的內容是可以改變的
B:初始化時機
a:只能初始化一次。
b:常見的給值
定義的時候。(推薦)
構造方法中。

2:多態(掌握)
(1)同一個對象在不同時刻體現出來的不同狀態。
(2)多態的前提:
A:有繼承或者實現關係。
B:有方法重寫。
C:有父類或者父介面引用指向子類對象。

多態的分類:
a:具體類多態
class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
b:抽象類別多態
abstract class Fu {}
class Zi extends Fu {}

Fu f = new Zi();
c:介面多態
interface Fu {}
class Zi implements Fu {}

Fu f = new Zi();
(3)多態中的成員訪問特點
A:成員變數
編譯看左邊,運行看左邊
B:構造方法
子類的構造都會預設訪問父類構造
C:成員方法
編譯看左邊,運行看右邊
D:靜態方法
編譯看左邊,運行看左邊

為什麼?
因為成員方法有重寫。
(4)多態的好處:
A:提高代碼的維護性(繼承體現)
B:提高代碼的擴充性(多態體現)
(5)多態的弊端:
父不能使用子的特有功能。

現象:
子可以當作父使用,父不能當作子使用。
(6)多態中的轉型
A:向上轉型
從子到父
B:向下轉型
從父到子
(7)孔子裝爹的案例協助大家理解多態
(8)多態的練習
A:貓狗案例
B:老師和學生案例
3:抽象類別(掌握)
(1)把多個共性的東西提取到一個類中,這是繼承的做法。
但是呢,這多個共性的東西,在有些時候,方法的聲明一樣,但方法體不一樣。
也就是說,方法聲明一樣,但是每個具體的對象在具體實現的時候內容不一樣。
所以,我們在定義這些共性的方法的時候,就不能給出具體的方法體。
而一個沒有具體的方法體的方法是抽象的方法。
在一個類中如果有抽象方法,該類必須定義為抽象類別。
(2)抽象類別的特點
A:抽象類別和抽象方法必須用關鍵字abstract修飾
B:抽象類別中不一定有抽象方法,但是有抽象方法的類一定是抽象類別
C:抽象類別不能執行個體化
D:抽象類別的子類
a:是一個抽象類別。
b:是一個具體類。這個類必須重寫抽象類別中的所有抽象方法。
(3)抽象類別的成員特點:
A:成員變數
有變數,有常量
B:構造方法
有構造方法
C:成員方法
有抽象,有非抽象
(4)抽象類別的練習
A:貓狗案例練習
B:老師案例練習
C:學生案例練習
D:員工案例練習
(5)抽象類別的幾個小問題
A:抽象類別有構造方法,不能執行個體化,那麼構造方法有什麼用?
用於子類訪問父類資料的初始化
B:一個類如果沒有抽象方法,卻定義為了抽象類別,有什麼用?
為了不讓建立對象
C:abstract不能和哪些關鍵字共存
a:final衝突
b:private 衝突
c:static 無意義
4:介面(掌握)
(1)回顧貓狗案例,它們僅僅提供一些準系統。
比如:貓鑽火圈,狗跳高等功能,不是動物本身就具備的,
是在後面的培養中訓練出來的,這種額外的功能,java提供了介面表示。
(2)介面的特點:
A:介面用關鍵字interface修飾
interface 介面名 {}
B:類實現介面用implements修飾
class 類名 implements 介面名 {}
C:介面不能執行個體化
D:介面的實作類別
a:可以是一個抽象類別。
b:可以是一個具體類,這個類必須重寫介面中的所有抽象方法。
(3)介面的成員特點:
A:成員變數
只能是常量
預設修飾符:public static final
B:構造方法
沒有構造方法
C:成員方法
只能是抽象的
預設修飾符:public abstract
(4)類與類,類與介面,介面與介面
A:類與類
繼承關係,只能單繼承,可以多層繼承
B:類與介面
實現關係,可以單實現,也可以多實現。
還可以在繼承一個類的同時,實現多個介面
C:介面與介面(重點)
繼承關係,可以單繼承,也可以多繼承
(5)抽象類別和介面的區別(自己補齊)?
A:成員區別
抽象類別:可以是變數,也可以是常量;有抽象方法也有非常像方法。
介面:常量;只能是抽象方法。
B:關係區別:
類與類:繼承關係,可以單實現,可以多層實現
類與介面:實現關係,可以單實現,也可以多實現。可以在繼承一個類的同時繼承多個介面。
介面與介面:繼承關係,可以單繼承,也可以多繼承。
C:設計理念不同
抽象類別:is a,抽象類別中定義的是共性功能。
介面:like a,介面中定義的是擴充功能。
(6)練習:
A:貓狗案例,加入跳高功能
B:老師和學生案例,加入抽煙功能0

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.