一、Java繼承詳解
Java繼承
目錄:
1.為什么要”繼承“?
2.繼承的類型
2.1 單繼承
2.2 多重繼承
2.3 多個子類繼承一個基類
2.4 Java沒有多繼承
3.繼承的特性
4.繼承關(guān)鍵字?
4.1 extends-繼承類
4.2 implements-繼承接口,可以變相實行多繼承
4.3 super-父類(直接看成類名)
4.4 this-當前類
4.5 final
4.5.1 final修飾類-不繼承
注:final修飾的類中,成員方法默認為final,成員變量不是默認為final
4.5.2 final修飾成員方法-只繼承不能重寫
4.5.3 final修飾成員變量-常量
4.6 構(gòu)造器
4.6.1 無參構(gòu)造器-默認調(diào)用父類的無參構(gòu)造器
4.6.2 有參構(gòu)造器-用super關(guān)鍵字調(diào)用父類的有參構(gòu)造器
二、要注意的點
1.構(gòu)造器
(1)子類的構(gòu)造器中調(diào)用父類的構(gòu)造方法必須放在第一行,否則會報錯
(2)子類的構(gòu)造器如果沒有調(diào)用父類的有參構(gòu)造方法,就會在第一行默認調(diào)用父類的無參構(gòu)造方法,但子類的構(gòu)造器如果調(diào)用了父類的有參構(gòu)造方法,則不會默認調(diào)用父類的無參構(gòu)造方法
(3)子類的構(gòu)造器中調(diào)用父類的有參構(gòu)造器要用super關(guān)鍵字
(4) 父類如果含有有參構(gòu)造方法,最好顯示寫出無參構(gòu)造方法,因為子類可能會默認調(diào)用父類的無參構(gòu)造方法,如果不顯示寫出無參構(gòu)造方法,則會報錯
代碼來源
//基類的無參構(gòu)造器和有參構(gòu)造器
class SuperClass
{
private int n;
//無參構(gòu)造器
SuperClass()
{
System.out.println("SuperClass()");
}
//有參構(gòu)造器
SuperClass(int n)
{
System.out.println("SuperClass(int n)");
//this.n指向的是變量n,n指向的是參數(shù)n
this.n = n;
}
}
class SubClass extends SuperClass
{
private int n;
SubClass()
{
//調(diào)用父類有參構(gòu)造器,則不會自動調(diào)用父類的無參構(gòu)造器
super(300);
System.out.println("SubClass");
System.out.println("————————————————");
}
public SubClass(int n)
{
//第一行默認調(diào)用父類無參構(gòu)造器
//Super()
System.out.println("SubClass(int n):"+n);
this.n = n;
}
}
public class InitializerTest {
public static void main(String[] args) {
SubClass sc = new SubClass();
SubClass sc2 = new SubClass(200);
}
}
輸出結(jié)果為:
SuperClass(int n)
SubClass
————————————————
//默認調(diào)用父類的無參構(gòu)造器
SuperClass()
SubClass(int n):200
搞笑??一刻
