new 是新創建,override是重載已經有的
看下面例子大家就知道了
A類 有方法 public virtual void test()
B類繼承自A類,有方法 public new void test()
如下實例化:
A a = new B();
a.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();//與上面相同
如果是new呢 對象是父類的就調用父類的方法
是子類的對象就調用子類的方法
如果把子類強制轉換成父類
那么對象也調用父類的方法
posted on 2009-02-24 16:33
sanmao 閱讀(119)
評論(0) 編輯 收藏