概念:
繼承就是創建分等級層次的類,讓子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法。繼承需要符合的 is-a 關系,父類更通用,子類更具體。子類會具有父類的一般特性也會具有自身的特性。
特性:
1.子類擁有父類非private的屬性,方法。
2.子類可以擁有自己的屬性和方法,即子類可以對父類進行擴展。
3.子類可以用自己的方式實現父類的方法。
4.提高了類之間的耦合性(繼承的缺點,耦合度高就會造成代碼之間的聯系越緊密,代碼獨立性越差)。
關鍵字:
繼承可以使用 extends 和 implements 這兩個關鍵字來實現繼承,而且所有的類都是繼承于 java.lang.Object,當一個類沒有繼承的兩個關鍵字,則默認繼承object祖先類。
extends
在 Java 中,類的繼承是單一繼承,也就是說,一個子類只能擁有一個父類,所以 extends 只能繼承一個類。
implements
使用 implements 關鍵字可以變相的使java具有多繼承的特性,使用范圍為類繼承接口的情況,可以同時繼承多個接口(接口跟接口之間采用逗號分隔)。
super
我們可以通過super關鍵字來實現對父類成員的訪問,用來引用當前類的父類。
this
指向自己的引用。
final
可以把類定義為不能繼承的,即最終類;或者用于修飾方法,該方法不能被子類重寫,也可以被定義為 final,被定義為 final 的變量不能被修改。
構造器
子類是不繼承父類的構造器(構造方法或者構造函數)的,它只是調用(隱式或顯式)。如果父類的構造器帶有參數,則必須在子類的構造器中顯式地通過 super 關鍵字調用父類的構造器并配以適當的參數列表。
如果父類構造器沒有參數,則在子類的構造器中不需要使用 super 關鍵字調用父類構造器,系統會自動調用父類的無參構造器。
class SuperClass {
private int n;
SuperClass(){
System.out.println("SuperClass()");
}
SuperClass(int n) {
System.out.println("SuperClass(int n)");
this.n = n;
}
}
class SubClass extends SuperClass{
private int n;
SubClass(){
super(300);
System.out.println("SubClass");
}
public SubClass(int n){
System.out.println("SubClass(int n):"+n);
this.n = n;
}
}
public class TestSuperSub{
public static void main (String args[]){
SubClass sc = new SubClass();
SubClass sc2 = new SubClass(200);
}
}
注意:
Java 不支持多繼承,但支持多重繼承。
java.lang包不需要import。
被聲明為 final 類的方法自動地聲明為 final,但是實例變量并不是 final