1、例項化父類時,可以使用new子類,執行建構函式順序為:先執行父類建構函式,再執行子類建構函式。
2、例項化子類時,只可以new子類,執行順序同上。
3、父類例項化後,只能執行父類的方法,獲得父類的屬性等。
4、例項化子類後,可同時執行子類和父類的方法和屬性,如同名方法,則執行子類的方法。
我們看以下的**:
public class a
}public class b:a
}那麼為什麼會這樣呢,我們知道,子類在建立物件執行建構函式之前會先執行父類的建構函式,那麼假如父類中有多個建構函式,又是執行哪個呢,這時候base這個關鍵字我想可以來說明一切。還是看**吧:
public class a
public a(string a)
}public class b:a
}在a中新增了無參建構函式,然後在b中修改了這句:pubic b():base(){},然後我們測試下,建立乙個b物件,在a類中的2個建構函式中設定斷點,發現無參建構函式執行了,我想正是因為這個base在這裡發揮了作用,是base()指向了父類的無參建構函式。其實,在類b中,我們完全可以省略 base(),也能正常執行,
第一段**中提示的錯誤的原因是a類中沒有無參的建構函式,這樣在執行b中的建構函式的時候,就沒法執行a中的無參建構函式了。 下面我在寫一段不使用無參建構函式的**,看了會更加清晰:
public class a
}public class b:a
}b中的建構函式指定了呼叫父類的a(string a)建構函式。這樣我們建立b物件在執行建構函式前就會執行父類中對應的指定的建構函式了
C 繼承與建構函式的呼叫
1 例項化父類時,可以使用new子類,執行建構函式順序為 先執行父類建構函式,再執行子類建構函式。2 例項化子類時,只可以new子類,執行順序同上。3 父類例項化後,只能執行父類的方法,獲得父類的屬性等。4 例項化子類後,可同時執行子類和父類的方法和屬性,如同名方法,則執行子類的方法。我們看以下的 ...
C 繼承與建構函式的呼叫
1 例項化父類時,可以使用new子類,執行建構函式順序為 先執行父類建構函式,再執行子類建構函式。2 例項化子類時,只可以new子類,執行順序同上。3 父類例項化後,只能執行父類的方法,獲得父類的屬性等。4 例項化子類後,可同時執行子類和父類的方法和屬性,如同名方法,則執行子類的方法。我們看以下的 ...
c 繼承與建構函式的呼叫
本片文章主要介紹在學習c 物件導向 繼承,以及建構函式的繼承呼叫時遇到的一些比較難理解的問題,希望對剛入門的朋友有一些幫助。繼承就是在類之間建立一種相交關係,使得新定義的派生類 子類 的例項可以繼承已有的基類 父類 的特徵和能力,而且可以加入新的特性或者是修改已有的特性建立起類的新層次。繼承是物件導...