子类继承父类后调用virtual函数问题(base.函数名)
void Main()
{?
SonB s = new SonB();
? ? ? ? ? ? s.Show();//先調(diào)用子類的函數(shù),再調(diào)用基類的函數(shù)(在子類方法中base.Show()),一共messageBox.show(...)了兩次
}
//**************
public class SonB : BaseA
? ? {
? ? ? ? public string b = "bb";
? ? ? ? public override void Show()
? ? ? ? {
? ? ? ? ? ? MessageBox.Show(b);
? ? ? ? ? ? base.Show();
? ? ? ? }
? ? }
? ?public class BaseA
? ?{
? ? ? ?public string a = "aa";
? ? ? ?public virtual void Show()
? ? ? ?{
? ? ? ? ? ?MessageBox.Show(a);
? ? ? ?}
? ?}
//******************
?protected override void WndProc(ref Message m)//子類的消息循環(huán)
? ? ? ? {
? ? ? ? ? ? if (m.Msg == WM_SYSCOMMAND)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (m.WParam.ToInt32() == SC_CLOSE)//不影響關(guān)閉操作,因?yàn)楹竺孢€調(diào)用了基類的消息循環(huán)( ?base.WndProc(ref m);//基類的消息循環(huán))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ............................
? ? ? ? ? ? ? ? ? ? //return;//返回的話就不調(diào)用基類的消息循環(huán)了,這樣就不能執(zhí)行基類的基本消息對應(yīng)的行為了
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? //根據(jù)繼承關(guān)系,子類重寫的函數(shù)調(diào)用完后,可以手動再調(diào)用基類的被重寫的函數(shù);
? ? ? ? ? ? base.WndProc(ref m);//基類的消息循環(huán)
? ? ? ? }
總結(jié)
以上是生活随笔為你收集整理的子类继承父类后调用virtual函数问题(base.函数名)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# 中重载WndProc,实现重写“最
- 下一篇: mysql 查外键关联关系 (指定被引用