override和new的区别

override

1. override是派生类用来重写基类中方法的;

2. override不能重写非虚方法和静态方法;

3. override只能重写用virtual、abstract、override修饰的方法;

4. 不能使用修饰符 new、static、virtual 或 abstract 来修改 override 方法。

new

1. new是派生类用来隐藏基类中的方法的;也就是说在派生类中“看不到”基类中的方法;

2. 如果要在派生类中隐藏(不是重写)基类中的方法,而没有使用new关键字,编译时会出现一个警告,提示如果是要隐藏基类中的方法,请使用new关键字;

3. 派生类可以隐藏基类中的虚方法,也可以隐藏基类中的普通方法。

4. 如果在派生类中用private来修饰new 方法,那么只在该派生类中隐藏了基类中的方法,在该派生类之外,相当于没有隐藏基类中的方法;

5. 如果在派生类中隐藏了基类中的方法,在该派生类的派生类中,将延续对该派生类对基类方法的隐藏。

 

posted @ 2016-09-18 12:08  lixiayiyu  阅读(236)  评论(0编辑  收藏  举报