問題:
A類 有方法 public virtual void test()
B類繼承自A類,有方法 public new void test()
如下實例化:
A a = new B(); a.test();
會調用哪個類中的TEST方法,最好能詳細給我解釋一下好嗎?先謝謝了!
回答:
如果你用override,則無論調用的是A類還是B類中的TEST(),系統都會找到它實質類的TEST();
如果是用的New,則可以通過類型轉換調用到基類的TEST();
下面是override的情況:
A a = new A(); B b = new B();A a1=new B();a.Test();//調用A中Test();b.Test();//調用B中Test();a1.Test();//調用B中Test();系統會自動識別a1是B的實例
((A)b).Test();//與上面相同
下面是new的情況:
A a = new A(); B b = new B();A a1=new B();a.Test();//調用A中Test();b.Test();//調用B中Test();a1.Test();//調用A中Test();((A)b).Test();//與上面相同
新聞熱點
疑難解答