none
关于C#的多级继承传递,如何判断重载结果? RRS feed

  • 问题

  •         class n1
            {
                public virtual void cc()
                {
                    MessageBox.Show("1");
                }
            }

            class n2 : n1 
            {
                public virtual void cc()
                {
                    MessageBox.Show("2");
                }
            }

            class n3 : n2
            {
                public override void cc()
                {
                    MessageBox.Show("3");
                }
            }

            class n4 : n3
            {
                public virtual void cc()
                {
                    MessageBox.Show("4");
                }
            }

       n2 A = new n4();
                A.cc(); //结果是3

    2015年5月7日 3:32

答案

  • 因為 n4 類裡的 cc() 方法變成是遮蔽(隱藏) 其父類的 同名方法.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年5月7日 10:53
  • 你好:

    你这段代码在编译的时候应该会给你一个警告,提示你子类的virtual方法遮蔽了父类的virtual方法,如果想重写父类里面的同名方法的话,请使用override或者new关键字。

    你创建了引用类型n2的实例A,然后条用A.cc方法,本来是执行n2.cc方法的,但是由于创建n4的过程中n2.cc被n3.cc重写了,当然执行n3.cc,在这个过程中n2.cc是被重写了,而n4.cc是被忽略了。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月8日 2:47
    版主
  • ?????
    2015年5月9日 10:37

全部回复

  • 因為 n4 類裡的 cc() 方法變成是遮蔽(隱藏) 其父類的 同名方法.


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2015年5月7日 10:53
  • 你好:

    你这段代码在编译的时候应该会给你一个警告,提示你子类的virtual方法遮蔽了父类的virtual方法,如果想重写父类里面的同名方法的话,请使用override或者new关键字。

    你创建了引用类型n2的实例A,然后条用A.cc方法,本来是执行n2.cc方法的,但是由于创建n4的过程中n2.cc被n3.cc重写了,当然执行n3.cc,在这个过程中n2.cc是被重写了,而n4.cc是被忽略了。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年5月8日 2:47
    版主
  • ?????
    2015年5月9日 10:37
  • 非常感谢
    2015年12月18日 18:34
  • 非常感谢
    2015年12月18日 18:35