new和override的区别
来源:互联网 发布:漏斗分析模型 算法 编辑:程序博客网 时间:2024/05/10 01:20
1.在类继承中,new是隐藏父类的方法,override是重写父类的方法。下面举例说明:
using System;
namespace Ch10Ex02
{
/// <summary>
/// 虚函数隐藏和重写的例子1
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
MyDerivedClass myDerivedObj=new MyDerivedClass();
MyBaseClass myBaseObjalone=new MyBaseClass();
MyBaseClass myBaseObj;
myBaseObj=myDerivedObj; //将子类对象赋给父类引用,有类型转换
myBaseObj.DoSomething();
myDerivedObj.DoSomething();
myBaseObjalone.DoSomething();
}
}
public class MyBaseClass //父类
{
public virtual void DoSomething()
{
Console.WriteLine("this is Baseimp");
}
}
public class MyDerivedClass:MyBaseClass //子类,继承了父类MyBaseClass
{
public new void DoSomething()
{
Console.WriteLine("this is Deriveimp");
}
}
}
本程序运行结果是:
this is Baseimp;
this is Derivedimp;
this is Baseimp;
如果修改加了颜色的代码段为:
public override void DoSomething()
{
Console.WriteLine("this is Deriveimp");
}
结果是:
this is Derivedimp;
this is Derivedimp;
this is Baseimp;
从这个例子中可以看出:new只是隐藏基类中的虚方法,相当于全新定义了一个子类的新方法,他属于子类;如果在多态的情况下,使用基类的引用,会调用基类的虚拟成员,即实现了多态。如果用ovrride重写,就算用基类的引用,使用的也是重写后的成员,让基类的方法以子类的内容实现,即基类的虚拟成员“好象”被改写。
另外,用override重写父类方法的时候,只有方法内容可以不同,其他(方法名,参数列表,返回值)一定要相同;而new就不一定了,可以相同,也可以不同。
- override 和 new 的区别
- new和override的区别?
- new和override的区别
- override和new的区别
- new和override的区别
- new 和 override 的区别
- override 和 new的区别
- override和new的区别
- override和new的区别?
- override和new的区别
- override和new的区别
- new和override区别
- c#中new和override的区别
- C#-new 和 override 的区别
- c#中,new 和 override 的区别
- C#中new和override的区别
- c#中new和override的区别
- 实例讲解override和new的区别
- JSTL使用入门
- 由VCL中的代码理解VCL中的消息处理机制
- 搜索之路在何方
- 《Chomsky: ideas and ideals》笔记
- Java技巧:多线程程序设计二十三个要点(转)
- new和override的区别
- JAVA中的细节-算法篇(1)
- RIA介绍
- eco igame 2007-24-02:31 搞定前一问题。
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞(附源代码)
- SDK中的任务跟踪代码简单注释(续)
- Task List 实现~~留念
- 扩展分词列表检索:暗含检索时提高相关性,更容易排除杂质,剔出仅有关键字但不相关的文字
- 基于MySQL的数据库集群系统的实现(来源:IBM DW)