物件導向之_繼承概念

隨風而欲發表於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();
}

在這裡插入圖片描述

相關文章