子類構造函數的特點
在子類中所有的構造函數的第一行都默認存在着super()語句,調用父類的構造函數。
調用本類的構造函數用this(實參列表)
調用父類的構造函數用super(實參列表)
注:1.this和super不能同時存在,二者都應該放在構造函數的第一行
2.當父類沒有空參數構造函數時,子類需要顯示定義super(參數)語句指定要訪問的父類中的構造函數。
爲什麼子類初始化都要訪問父類中的構造函數?
因爲子類繼承了父類中的內容,所以創建對象時必須要看父類是如何對內容初始化的。(父類的初始化要先完成)
覆蓋:當子父類中出現一模一樣的方法時,子類對象運行的是子類中的方法。
覆蓋注意事項:
1.子類方法覆蓋父類方法,必須要保證權限大於等於父類權限
2.靜態只能覆蓋靜態或者被靜態覆蓋
3.覆蓋是函數的特性,不能用於成員變量
class
Car
extends
Vehicle
{
public
static
void
main (String[] args)
{
new
Car(). run();
}
private
final
void
run()
{
System.
out. println (
"Car"
);
}
}
class
Vehicle
{
private
final
void
run()
{
System.
out. println(
"Vehicle"
);
}
}
如果將父類和子類的權限都改爲public,則在父類的run方法會出現編譯錯誤,因爲被final修飾的方法不能被覆蓋。