標籤:java學習 super 關鍵字 多態性 程式
第七章 類的深入解析
1. 繼承
1.1 類繼承的方法:在Java中,子類對父類的繼承是在類的聲明中使用extends關鍵字來指明的。其一 般格式為:[類修飾符] class <子類名> extends <父類名>{ 類體內容 }。一個類只能直接繼承一個 父類,一個父類可以有多個子類。
1.2 成員變數的繼承和隱藏:基於父類建立子類時,子類可以繼承父類的成員變數和成員方法。但是, 如果在父類和子類中同時聲明了一個同名變數,則這兩個變數在程式運行時同時存在。即:父類的 成員變數用於父類方法,子類的成員變數用於子類方法,互不干擾。
1.3 方法的繼承與覆蓋:子類可以繼承父類中所有可以被子類訪問的成員方法,但如果子類重新定義了 從父類繼承的方法,此時父類的這個方法在子類中將不複存在,此時稱為子類方法覆蓋了父類的方 法,簡稱方法的覆蓋(override)。
1.4 構造方法的繼承:當通過子類建立對象時,系統會首先調用父類的無參構造方法,然後才會執行子 類的構造方法。如果想要調用父類的有參構造方法,可以使用super關鍵字。
2. 多態性:多態性是指同名的不同方法在程式中共存。即同一個方法定義幾個版本,程式運行時根據不 同情況執行不同的版本。“一個對外介面,多個內在實現方法”
多態性的實現方式:
(1)方法覆蓋實現多態性
此時通過子類對繼承父類的方法進行重定義來實現。
(2)方法重載實現多態性
通過定義多個同名的不同方法來實現,系統會根據參數(類型、個數、順序)的不同來區分不 同方法。
3.抽象類別:抽象類別中通常只包含抽象方法(只有方法的聲明,沒有方法體),而方法的具體實現則由其派 生出的各子類來完成,這使得程式的功能描述和功能實現得以分離。此外,由於一個抽象類別可派生多 個子類,因此,抽象類別中的一個抽象方法可以在多個子類中有多種實現方式,這也實現了類的多態性
(1)抽象類別的定義格式通常如下:
public abstract class Plane { //聲明抽象類別
private String shape; //聲明成員變數
......
public abstract double area(); //聲明抽象方法,注意:分號必不可少
......
}
(2)抽象類別是不能執行個體化的,也就是說,不能基於抽象類別來建立對象。
(3)抽象類別中也可以含有普通成員變數和成員方法。但是,抽象方法只能出現在抽象類別中。也就 是說,含有抽象方法的類必須是抽象類別,非抽象類別不能包含抽象方法。
4.介面:介面是由常量和抽象方法組成的特殊類。聲明介面的一般格式如下:
[public] interface 介面名 [extends 父介面名列表]{
//常量聲明
//抽象方法聲明
}
介面與抽象類別之間的關係:
(1)介面中只能定義常量和抽象方法,而抽象類別中可以聲明其他成員變數和成員方法;
(2)一個類同時只能繼承一個抽象類別,但可以同時實現多個介面;
(3)抽象類別的繼承用extends,介面的實現用implements。
Java學習筆記—第七章 類的深入解析