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 阅读(116) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 

常用链接

留言簿(5)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜