1. 程式人生 > >子類的構造方法(與super關鍵字相結合)

子類的構造方法(與super關鍵字相結合)

1、

在這裡插入圖片描述

隱式呼叫:子類構造方法沒有顯示呼叫父類構造方法(子類中沒有super()),那麼父類必須顯示提供無參構造方法
在這裡插入圖片描述

在這裡插入圖片描述

這個時候,系統必須在父類中顯示呼叫無參建構函式


顯示呼叫

在這裡插入圖片描述

在這裡插入圖片描述


2、例項1:
在這裡插入圖片描述
在calcPerimeter方法中使用的是length與4相乘,而不是width,是因為width是pirvate型別的,length是protected型別的,private只能在其所在的類中使用。


3、例項2:
super放在第一行
在這裡插入圖片描述


4、例項3:

在這裡插入圖片描述

在new B()的時候,首先要呼叫父類中無形參構造方法,輸出A(),然後才打印B(),在b.f()的時候,因為子類對於父類實現了覆蓋,所以輸出的是B:f();

如果父類中無形參或者是有形參的構造方法是private型別的話,是無法通過super呼叫父類構造方法的(因為super關鍵字不能訪問父類中private的成員變數和方法),也就是說無法new出一個物件來。

如果要產生一個繼承物件的話,必須先呼叫父類非private型別的構造方法,然後再用繼承物件的構造方法,之後再new出一個物件來。

先呼叫父類的建構函式(不管是有形參還是無形參),然後再呼叫子類的建構函式(不管是有形參還是無形參)

super關鍵字不能訪問父類中private的成員變數和方法。