C# override与new的区别
来源:互联网 发布:伊藤诚 知乎 编辑:程序博客网 时间:2024/05/20 05:23
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">override(重写):子类对父类中虚函数进行重写,相当于覆盖;</span>
new(隐藏):子类对父类中的函数进行隐藏。
为作验证建立以下几个类:
</pre><pre name="code" class="csharp"> public abstract class A { public virtual void Fun1() { Console.WriteLine("调用A类中的Fun1函数。"); } public virtual void Fun2() { Console.WriteLine("调用A类中的Fun2函数。"); } }
public class B:A { public new void Fun1() { Console.WriteLine("调用B类中的Fun1函数。"); } public override void Fun2() { Console.WriteLine("调用B类中的Fun2函数。"); } }
public class C:B { new public void Fun2() { Console.WriteLine("调用C类中的Fun2函数。"); } }
一般的情况:子类声明构造子类的对象,如
<pre name="code" class="csharp">B man = new B():B.Fun1();B.Fun2();
而另一种情况:父类声明构造子类的对象,如
<pre name="code" class="csharp">A Bman = new B();A Cman = new C();Bman.Fun1();Bman.Fun2();Cman.Fun1();Cman.Fun2();
如理,得以下输出结果:
调用A类中的Fun1函数。调用B类中的Fun2函数。调用A类中的Fun1函数。调用B类中的Fun2函数。
在父类声明 子类构造的对象中,若子类用override对父类方法进行重写,
则调用的是被重写的方法;
若子类用new对父类方法进行隐藏,
则调用的是父类被隐藏的方法。
0 0
- C# override与new的区别
- C# override,new 的区别
- C#中override重写与new隐藏的区别,以及C#与Java的Override区别
- C#中override重写与new隐藏的区别,以及C#与Java的override区别
- C#中override重写与new隐藏的区别,以及C#与Java的Override区别
- C#的new与override
- override 与new 的区别
- New与Override的区别
- override与new的区别
- new与override的区别
- C#中new的用法,及与override的区别
- C# Tips:在继承中,new 与 override 的区别
- C# override重写与new隐藏的区别
- c#中new和override的区别
- c#中,new 和 override 的区别
- C#中new和override的区别
- C# new virtual override 之间的区别
- c#中new和override的区别
- JSON字符串与NSDictionary和NSArray之间的转化
- 黑马程序员——java基础---多线程
- IO流的使用(二)
- 递归算法2
- C++设计模式-Observer观察者模式
- C# override与new的区别
- cxf客户端
- 5.补发----数据的物理结构,线性结构与链式结构
- 6.补发-关于数据类型
- AFNetworking (2.6.1)出现错误code = 1016和3084 的解决方案
- armv6, armv7, armv7s的区别
- 7.补发---抽象数据类型ADT
- 8.补发-----补充数据结构基本概念之间的关系
- access denied for user 'root'@'localhost'