override与new的区别
2009-04-14 13:39
477 查看
代码如下:
public class baseClass
{
public baseClass()
{
Method1();
}
public virtual void Method1()
{
Console.WriteLine("Method1 in baseClass");
}
}
public class derivedClass : baseClass
{
private int value;
public derivedClass()
{
value = 2;
}
public override void Method1()
{
if (value == 2)
Console.WriteLine("value==2");
else
Console.WriteLine("value!=2");
}
}
问题:
1、初始化一实例:baseClass tempClass=new derivedClass()之后,会输出什么结果?
2、把derivedClass类中的override换成 new之后,又会输出什么结果?
正确答案:
1、value!=2
2、Method1 in baseClass
也就是说,在用new关键字时,派生类与基类的这两个相同签名的方法已经没有任何联系了。
· 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。
· 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。
public class baseClass
{
public baseClass()
{
Method1();
}
public virtual void Method1()
{
Console.WriteLine("Method1 in baseClass");
}
}
public class derivedClass : baseClass
{
private int value;
public derivedClass()
{
value = 2;
}
public override void Method1()
{
if (value == 2)
Console.WriteLine("value==2");
else
Console.WriteLine("value!=2");
}
}
问题:
1、初始化一实例:baseClass tempClass=new derivedClass()之后,会输出什么结果?
2、把derivedClass类中的override换成 new之后,又会输出什么结果?
正确答案:
1、value!=2
2、Method1 in baseClass
也就是说,在用new关键字时,派生类与基类的这两个相同签名的方法已经没有任何联系了。
· 如果派生类中的方法前面带有 new 关键字,则该方法被定义为独立于基类中的方法。
· 如果派生类中的方法前面带有 override 关键字,则派生类的对象将调用该方法,而不是调用基类方法。
相关文章推荐
- c#中隐藏(new)和方法重写(override)和重写(overload)的区别
- 浅析C#中new、override、virtual关键字的区别
- 浅析C#中new、override、virtual关键字的区别
- Sealed,new,virtual,abstract与override的区别
- C#中new、override、virtual关键字的区别
- c#中virtual,new和override的区别
- C#中多态override 和new的区别
- C#学习笔记系列之一:new和override的区别
- new 与 override的区别 转
- new与override的差异以及virtual方法与abstract方法的区别
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- c#的new、abstract、virtual、override,sealed关键字区别
- c#中,new 和 override 的区别
- C# new override 的区别
- C#中隐藏(new)和方法重写(override)和重载(overload)的区别
- override和new的区别
- 浅析C# new 和Override的区别
- sealed,new,virtual,abstract与override关键字的区别?
- 深入理解C#中new、override、virtual关键字的区别
- C# override new 的区别