多型和繼承舉例

2021-07-15 18:02:18 字數 2072 閱讀 8822

程式1

需求:建立乙個人類(person)和學生類(student)功能如下:

1)person包含4個資料成員name、addr、gender和age,分別表示姓名、位址、類別和年齡。設計乙個輸出方法talk()來顯示這4個屬性。

2)student類繼承person類,並增加成員math和english來存放數學和英語成績,用乙個6引數構造方法、乙個2引數構造方法、乙個無參構造方法和覆寫輸出方法talk()用於顯示6種屬性。對於構造方法引數個數不足以初始化資料成員的,在構造方法中採用自己指定預設值來實施初始化。

package com.liaojianya.chapter2;

/** * this program demonstrates the use of polymorphisn.

* @author liao jianya

* 2023年7月24日

*/public class personstudent

}class person

public person(string name, string addr, string gender, int age)

public string talk()

}class student extends person

public student(float math, float english)

public student()

public string talk()

}

執行結果:

my name is 王二, address is 上海, my gender is female, i'm 44 years old.my math score is 100.0, and my english score is 53.0

my name is wangyuan, address is nanjing, my gender is male, i'm 33 years old.my math score is 55.0, and my english score is 66.0

my name is 王小元, address is 南京, my gender is 男, i'm 23 years old.my math score is 98.5, and my english score is 56.6

程式2:

package com.liaojianya.chapter2;

/** * 定義乙個instrument樂器類,並定義其公有的方法play(),再分別定義其子類wind(管樂器)

* percussion(打擊樂器),stringed(弦樂器),覆寫play方法,實現每種樂器獨有的play方式。

* 最後在測試類中使用多型的方法執行每個子類的play()方法。

* @author liao jianya

* 2023年7月24日

*/public class instrumenttest

}class instrument

}class wind extends instrument

}class percussion extends instrument

}class stringed extends instrument

}

執行結果:

管樂器演奏!

打擊樂器演奏 !

弦樂器演奏!

分析:1)通過賦值操作,將這些子類樂器物件向上型別轉換為instrument型別,然後經過父類物件ins呼叫其play方法,這時,實際呼叫的是各個子類物件的play方法。

2)父類物件依據被賦值的每個子類物件的型別,做出恰當的相應(即與物件具體類別相適應的反應),這就是物件多型性的關鍵思想。同樣的訊息或者介面(本例中都是play)在傳送給不同的物件時,會產生多種形式的結果。

3)繼承是子類使用父類的方法,多型則是父類使用子類的方法。確切的說,多型是父類使用被子類覆蓋的同名方法,如果子類的方法是全新的,父類不存在同名的方法,則父類也不能使用子類自己獨有的方法。

繼承和多型

物件導向程式設計時有乙個非常重要的原則 write once only once 編寫一次,且僅編寫一次 如果沒有繼承這種機制我們可能要重複寫很多 下面來看一下繼承 一 繼承 1 子類如果繼承父類必須使用extends這個關鍵字 2 子類呼叫父類的構造方法使用super關鍵字,也可以通過super來...

繼承和多型

物件導向程式設計時有乙個非常重要的原則 write once only once 編寫一次,且僅編寫一次 如果沒有繼承這種機制我們可能要重複寫很多 下面來看一下繼承 一 繼承 1 子類如果繼承父類必須使用extends這個關鍵字 2 子類呼叫父類的構造方法使用super關鍵字,也可以通過super來...

繼承和多型

類還有乙個重要的特性就是繼承,什麼是繼承?它又有什麼作用呢?繼承最主要的目的就是為了擴充套件原類的功能,加強或改進原類所沒有定義的屬性及方法。例如我們有狗這個類,可是狗的種類還是有很多,比如說博美狗,聖伯納,柴犬等等,如果只用狗一種類來定義所有種類狗的屬性及方法,那麼用這個類所產生出來的物件一定會有...