public class A { public virtual void TestM1() { MessageBox.Show("A.TestM1"); } public virtual void TestM2() { MessageBox.Show("A.TestM2"); } } public class B: A { public override void TestM1() { MessageBox.Show("B.TestM1"); } public new void TestM2() { MessageBox.Show("B.TestM2"); } } public class App { A a = new B(); public void Test() { a.TestM1(); a.TestM2(); } }
很多时候子类override是为了基类使用时可以有灵活的构造配置,(多态)使用方总是基类对象所以如果子类有它自己的成员(包括new的成员函数在内)是无法被其调用的,那些不能为调用方提供调用的成员对于调用方来说是没有意义的,这也从一个方面回答了override不能被new代替的原因;
子类与父类,
最新推荐文章于 2022-09-28 14:23:21 发布