子類與父類
- 類之間的繼承關系是一種由已經存在的類建立新類的機制,可以有效地實作代碼的重複使用
- 可以先定義一個共有屬性的一般類(父類或超類),在此基礎上定義新的類(子類)
- 子類可以繼承父類的屬性和方法(子類不繼承父類的構造方法),也可以定義自己獨有的屬性和方法
- 父類可以是Java類庫中的類,也可以是自己編寫的類
- Java不支援多重繼承,即子類隻能有一個父類
類繼承的文法格式:
class 子類名 extends 父類名
{
子類的類體
}
• 如果一個類的聲明中沒有使用關鍵字extends,這個類被系統預設為是Object類的子類,Object類是java.lang中的類
類繼承的使用:
• 如果子類繼承了父類的成員變量和成員方法,就可以将它們作為己用,就像在子類中定義的一樣
• 子類如果沒有繼承父類的某些成員變量或成員方法,則子類無法對它們進行通路或調用
成員變量的隐藏:
• 子類中定義的新的變量如果和繼承過來的變量名稱相同,則會隐藏繼承過來的成員變量
class A{
int first=10;
int second=20;
}
class B extends A{
int first=100;
double second=200; //B的對象使用first和second時,A中的被隐藏
int third=300;
void change()
{ first+=50; second+=50; third+=50; }
}
方法的重寫:
• 方法的重寫也是多态的一種表現
• 方法的重寫是指子類可以改寫父類方法所實作的功能,但是子類重寫的方法必須與父類中的對應方法有相同的名稱、傳回類型和參數清單
• 如果父類中的方法被子類重寫,則子類的對象調用這個方法時,實際運作的是子類中改寫之後的方法,父類中的相應方法被隐藏了起來
關鍵字super:
• 關鍵字super代表目前對象的父類部分
• super有兩種用法
1.子類使用super調用父類的構造方法
2.子類使用super操作父類中被子類隐藏的成員變量和方法
• 子類不繼承父類的構造方法
1.子類中有些初始化工作需要調用父類的構造方法幫助實作,需要用super關鍵字
2.子類構造方法中調用父類構造方法的文法為:
super(參數清單)
4.子類構造方法中使用super調用父類構造方法時,必須把調用語句放在最開始
•子類使用super操作父類中被子類隐藏的成員變量和方法
1.super.變量名
2.super.方法名(參數清單)
子類為什麼不能繼承父類的構造方法
構造方法的定義是與類的名稱相同:如果子類能夠繼承父類的構造方法,那麼在子類的構造方法中就有不同于子類名稱的構造法;這與構造方法的定義不符,是以子類是不能繼承父類的構造方法的。