C#基础知识四之override和new的区别
2016-04-26 13:35
1136 查看
override
override是派生类用来重写基类方法的。调用的派生类方法,如需调用基类方法用base关键字override不能重写非虚方法或静态方法。
override重写必须用abstract、override、virtrual修饰的方法。
new
new 是派生类用来隐藏基类方法的,在派生类中看不到基类方法,但调用的还是基类的方法。如果在派生类中要隐藏基类方法而不用new关键字,编译时会出现一个警告,提示如果是要隐藏基类中的方法,请使用new关键字。
new可以隐藏基类中的普通方法也可以是虚方法。
如果在派生类中用private来修饰new 方法,那么只在该派生类中隐藏了基类中的方法,在该派生类之外,相当于没有隐藏基类中的方法;
如果在派生类中隐藏了基类中的方法,在该派生类的派生类中,将延续对该派生类对基类方法的隐藏。
public class Program { static void Main(string[] args) { A a = new A(); a.Test(); B b = new B(); b.Test(); A c = new B(); c.Test(); A d = new C(); d.Test(); Console.ReadLine(); } } public class A { public virtual void Test() { Console.WriteLine("A Test()"); } } public class B : A { private new void Test() { Console.WriteLine("b Test()"); } } public class C : B { public override void Test() { Console.WriteLine("C Test()"); } }
相关文章推荐
- Ctrl-A全选这点事(C#,WinForm)
- 【C#设计模式-适配器模式】
- C#事件(event)的一个实例
- C#操作Xml文件:增,删,改,查
- c# 虚函数Virtual与重写override
- C#常用异常类记录
- 用于验证码图片识别的类(C#源码)
- C#索引器
- 浅谈C#垃圾回收
- 平面内,线与线 两条线找交点 两条线段的位置关系(相交)判定与交点求解 C#
- c# winform 动态画矩形 矩形大小可以拖动
- C# winform开发:Graphics、pictureBox同时画多个矩形
- C#碎碎念(一)值类型与引用类型
- C#之泛型
- C# 获取当前路径方法
- C# INI类
- C#实现XML和实体类之间相互转换:序列化和反序列化
- C#如何读写和创建INI文件
- C# 计算时间差
- C#操作XML-创建-追加-带属性的读写(全)