面向物件之_繼承概念
阿新 • • 發佈:2019-01-01
1,如果多個類具有相同的屬性和行為,我們可以抽取出共性的內容定義父類,這時再建立相似的類時只要繼承父類即可。
子類擁有父類的所有屬性與方法,無需重新定義。並且可以直接使用非私有的父類成員。
從邏輯關係來看,子類必須屬於父類的一種時,才應該繼承,且在原有基礎上進行功能擴充套件。
繼承關係的產生通常是為了定義出功能更為具體、更為強大的子類。所以,定義子類後,一般建立子類物件使用。子類可以直接使用父類非私有的成員變數與成員方法。
(注:如果成員變數沒有使用private修飾,則子類也可直接訪問。)
2,Java當中的繼承格式:
public class 子類 extends 父類{
//父類的非私有方法與屬性均繼承過來,可以直接呼叫
//可以在父類的基礎上擴充套件方法
}
如:
父類的定義:
public class Person{
//父類的成員變數
private String name;
//父類的方法
public void eat(){
System.out.println(“吃飯”);
}
}
子類繼承父類的定義:
public class Chinese extends Person{
//繼承的同時,可以定義子類特有的方法
public void sleep() {
System.out.println(“睡覺”);
}
}
3,繼承注意事項
- Java只支援單繼承,不支援多繼承。即只能有一個父類。
- 父類可以繼續有父類。
- 所有類均有父類,只有Object類沒有父類。
- 在所有使用父類型別的地方均可以傳入其子類物件。
- 子類訪問父類非私有化成員變數
4.繼承後記憶體圖
以Person類為例:
定義父類
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private int age;
}
定義子類
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Chinese extends Person{
private Stirng address;
}
定義測試類,使用子類建立物件
public class Test{
Chinese c = new Chinese();
}