1. 程式人生 > >理解構造器為什麼不能被繼承

理解構造器為什麼不能被繼承

不能,因為子類繼承父類的時候,先執行父類建構函式;具體的說就是執行父類時就會先“呼叫”父類的建構函式,注意“呼叫”和繼承不是一個含義,實質上是“自動執行”。
繼承(extends)的含義其實是“擴充套件”,子類完全沒必要擴充套件父類的建構函式,因為反正每次調子類的時候都會“自動執行”它父類的建構函式,如果真的需要子類建構函式特殊的形式,子類直接修改或過載自己的建構函式就好了。

估計是你對“建構函式”的意義本身不理解,“呼叫”一個類有“繼承”和“組合(說白了new 一個類)”兩種方式,當你“呼叫”一個類的時候就會“自動執行”它的“建構函式”。

有些看官可能會覺得有些繞,下面給出一個通俗的解釋,引用傳智播客的老畢語錄;這樣好理解。

建構函式和類同名,父類和子類肯定不同名,那父類的建構函式放在在子類裡有什麼用啊,那不成一般方法了嗎?

所以父類的建構函式是無法繼承的。