继承类中override和new的区别

习惯先贴代码:
Code

 

 

下面是执行结果:

A.Fun()
B.Fun() using 'override'
BB.Fun() using 'new'
~~~~~~~~~~~~~~~~~~`
B.Fun() using 'override'
A.Fun()
A ab = new B(); ab's type is B
But ab is also A

 

好了,让我们来分析一下吧。

代码的前一部分就是“~~~~~~~~~~”之上,应该没有什么好说的了。

关键就是接下来声明“A ab = new B();”后,如果对父类的虚函数方法在子类中使用了override重写,则执行的是子类中的方法。如果在子类中是使用new来重写父类的方法,则执行的是父类的方法。

在这里,我们可以这样来理解,override就好比一个橡皮擦,当它出现时,直接擦除父类的方法,然后把自己的放在上面。

如果我们在子类中用的是new,则打个比方就是没有那个橡皮擦,该是谁的就是谁的。

posted on 2008-07-29 22:15  啊不才  阅读(742)  评论(0编辑  收藏  举报

导航