new 是新創(chuàng)建,override是重載已經(jīng)有的
看下面例子大家就知道了
A類 有方法 public virtual void test()
B類繼承自A類,有方法 public new void test()
如下實(shí)例化:
A a = new B();
a.test();
如果你用override,則無(wú)論調(diào)用的是A類還是B類中的TEST(),系統(tǒng)都會(huì)找到它實(shí)質(zhì)類的TEST();
如果是用的New,則可以通過(guò)類型轉(zhuǎn)換調(diào)用到基類的TEST();
下面是override的情況:
A a = new A();
B b = new B();
A a1=new B();
a.Test();//調(diào)用A中Test();
b.Test();//調(diào)用B中Test();
a1.Test();//調(diào)用B中Test();系統(tǒng)會(huì)自動(dòng)識(shí)別a1是B的實(shí)例
((A)b).Test();//與上面相同
下面是new的情況:
A a = new A();
B b = new B();
A a1=new B();
a.Test();//調(diào)用A中Test();
b.Test();//調(diào)用B中Test();
a1.Test();//調(diào)用A中Test();
((A)b).Test();//與上面相同
如果是new呢 對(duì)象是父類的就調(diào)用父類的方法
是子類的對(duì)象就調(diào)用子類的方法
如果把子類強(qiáng)制轉(zhuǎn)換成父類
那么對(duì)象也調(diào)用父類的方法