Java——三大特性之一:繼承

概念:

繼承是java面向對象編程技術的一塊基石,因爲它允許創建分等級層次的類。

繼承就是子類繼承父類的特徵和行爲,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行爲。

上面這張圖就可以反映出我們生活中的繼承,簡單的來說:

兔子和羊都屬於食草類動物,獅子和豹都屬於食肉類動物。

食草類動物和食肉類動物又同屬於動物類。

所以繼承需要符合的關係是:is-a,父類更通用,子類更具體。

雖然食草動物和食肉動物都是屬於動物,但是兩者的屬性和行爲上有差別,所以子類會具有父類的一般特性,同時也會具有一些自身的特性。

總的來說,繼承可以使代碼的複用變的十分簡單,我可以定義一個子類,擁有父類的所有屬性和方法。同時,子類也可以重新定義方法,追加屬性和方法,可以很大程度的減少工作量。

繼承的特性有以下幾點:

①子類擁有父類非 private 的屬性、方法。

②子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展。

③子類可以用自己的方式實現父類的方法。

④Java 的繼承是單繼承,但是可以多重繼承,單繼承就是一個子類只能繼承一個父類,多重繼承就是,例如 A 類繼承 B 類,B 類繼承 C 類,所以按照關係就是 C 類是 B 類的父類,B 類是 A 類的父類。

⑤提高了類之間的耦合性(繼承的缺點,耦合度高就會造成代碼之間的聯繫越緊密,代碼獨立性越差)。

下面,這張圖體現了Java中的繼承類型👇👇👇

繼承的關鍵字: 

繼承可以使用 extends 和 implements 這兩個關鍵字來實現繼承,而且所有的類都是繼承於 java.lang.Object,當一個類沒有繼承的兩個關鍵字,則默認繼承object(這個類在 java.lang 包中,所以不需要 import)祖先類。 

extends關鍵字:在 Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以說 extends 只能繼承一個類。

implements關鍵字:使用 implements 關鍵字可以變相的使java具有多繼承的特性,使用範圍爲類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間採用逗號分隔)。

①super關鍵字:代表的是父類空間的引用。this關鍵字:代表的是所屬函數的調用者對象。

②super關鍵字:必須要有繼承關係才能使用。this關鍵字:不需要存在繼承關係也可以使用。

③super關鍵字:調用父類的構造函數。this關鍵字:調用本類的構造函數。

在這裏,我們先舉一個簡單的例子吧!!!👇👇👇

import java.util.*;
class Animals {//定義父類Animals
	public void getEat() {//定義一個公共方法
		System.out.println("很多動物正在吃飯!");
	}
}
class Dog extends Animals {//定義子類Dog,繼承了父類Animals
	public void getEat() {
		System.out.println("它是狗,正在吃骨頭!");
	}
	public void getEating() {
		this.getEat();//調用本類的方法getEat()
		super.getEat();//調用父類的方法getEat()
	}
}
class Cat extends Animals {//這個與子類Dog是完全一樣的
	public void getEat() {
		System.out.println("它是貓,正在喝牛奶!");
	}
	public void getEating() {
		this.getEat();
		super.getEat();
	}
}
public class Forever {
	public static void main(String[] args){
		Animals a=new Animals();
		a.getEat();
		Dog b=new Dog();
		b.getEating();
		Cat c=new Cat();
		c.getEating();
	}
}

運行結果如下: 

下面,我們再來看一個例子吧!!!👇👇👇

①現有一個父類Father

public class Father {
	private String name;
	private String action;
	public Father(String name,String action) {
		this.name=name;
		this.action=action;
	}
	public void getEat() {
		System.out.println("動物:"+this.name);
	}
	public void getAction() {
		System.out.println("愛好:"+this.action);
	}
	public void animal() {
		System.out.println("動物真有趣!");
	}
}

②兩個子類Son1和Son2 

public class Son1 extends Father {
	public Son1(String name,String action) {
		super(name,action);
	}
}
public class Son2 extends Father {
	public Son2(String name,String action) {
		super(name,action);
	}
}

③最後通過Java運行程序的入口main方法裏的具體操作來實現繼承

import java.util.*;
public class First {
	public static void main(String[] args) {
		Father a=new Father("豬","吃喝睡");
		Son1 b=new Son1("狗","吃骨頭!");
		Son2 c=new Son2("貓","抓老鼠!");
		b.getEat();
		b.getAction();
		c.getEat();
		c.getAction();
		a.getEat();
		a.getAction();
		a.animal();
	}
}

運行結果如下: 

那麼,以上就是博主對於Java三大特性之一——繼承的理解,如有錯誤,或是理解不周的地方,還望大佬指出!!!

在此,感謝大家的支持,感謝感謝!!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章