第五天 Java多型

2021-08-03 14:41:24 字數 2297 閱讀 5741

多型

同乙個物件在不同時刻體現出來的不同狀態。(執行期)

能體現多型的前提:

有繼承或者實現關係。

有方法重寫。

有父類或者父介面引用指向子類物件。

多型的分類:

具體類多型

class fu {}

class zi extends fu {}

fu fu = new zi();

抽象類多型

abstract class fu {}

class zi extends fu {}

fu fu = new zi();

介面多型

inte***ce fu {}

class zi implements fu {}

fu fu = new zi();

多型中父類訪問特點

成員變數

編譯看左邊,執行看左邊

構造方法

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

成員方法

編譯看左邊,執行看右邊

靜態方法

編譯看左邊,執行看左邊

為什麼成員方法父類引用呼叫子類的方法?

因為成員方法有重寫。

多型的好處:

提高**的維護性(繼承體現)

提高**的擴充套件性(多型體現)

多型的弊端:

父不能使用子的特有方法。

多型中的轉型

向上轉型

向下轉型

抽象類

抽象類特點

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

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

抽象類不能例項化

抽象類的子類

a:是乙個抽象類。

b:是乙個具體類。這個類必須重寫抽象類中的所有抽象方法。

抽象類成員特點:

成員變數:

有變數,有常量

構造方法:

有構造方法

成員方法:

有抽象,有非抽象

抽象類的幾個小問題

抽象類有構造方法,不能例項化,那麼構造方法有什麼用?

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

乙個類如果沒有抽象方法,卻定義為了抽象類,有什麼用?

不讓其建立物件

abstract不能和哪些關鍵字共存

final 報錯

private 衝突

static 無意義

介面 介面的特點:

介面用關鍵字inte***ce修飾

inte***ce 介面名 {}

類實現介面用implements修飾

class 類名 implements 介面名 {}

介面不能例項化

介面的實現類

是乙個抽象類。

是乙個具體類,這個類必須重寫介面中的所有抽象方法。

介面的成員特點:

成員變數:

只能是常量;預設修飾符:public static final

構造方法:

沒有構造方法

成員方法:

只能是抽象的;

預設修飾符:public abstract

類與類,類與介面,介面與介面

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

類與介面:

實現關係,可以單實現,也可以多實現;

還可以在繼承乙個類的同時,實現多個介面

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

抽象類和介面的區別

成員區別

抽象類:有變數,有常量

介面:只能是常量,預設修飾符為public static final

構造方法:介面沒有構造方法,抽象類有構造方法

成員方法: 介面中只能是抽象的;抽象類中有抽象,有非抽象

設計理念不同

抽象類:is a,抽象類中定義的是共性功能。

介面:like a,介面中定義的是擴充套件功能。

final關鍵字

最終,可以修飾類,方法,變數。

特點:

它修飾的類,不能被繼承。

它修飾的方法,不能被重寫。

它修飾的變數,是乙個常量。

有關內容:

區域性變數

基本型別 值不能發生改變

引用型別 位址值不能發生改變,但是物件的內容是可以改變的

初始化時機

只能初始化一次。

常見的給值

定義的時候或者在構造方法中。

Java學習第五天

當類載入器需要載入某個類時,類載入器會在載入初始化後生成該類的乙個類物件 class 用於描述該類的元資料資訊等。在其後的連線過程中,會初始化該類的靜態成員 變數或靜態初始化器 靜態初始化變數和初始化器按照先後順序執行初始化。例如 static int a 10 static 這樣初始化後a 100...

Java 基礎第五天

示例 class student public string getname public void show 測試類 玩基本類的.建立物件,通過物件調成員 class demo 對已經做好封裝的類 person為例 由於person中的屬性都被 private 了,外界無法直 接訪問屬性,如果想設...

java學習之路 第五天

今天的內容主要就是隨機數的二種方式和有關隨機數的二個案例 1.math方法 語法 math.random 生成的是0.0 1.0之間的隨機浮點數 備註 前包括後不包括0.0可能會生成,1.0不會生成 2.random類 語法 random r new random 常用的方法 r.nextint 生...