当前位置:
首页 >
new关键字对类成员的阻断
发布时间:2023/12/9
38
豆豆
生活随笔
收集整理的这篇文章主要介绍了
new关键字对类成员的阻断
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
昨天终于对new关键字对类成员的阻断作用有了比较清晰的认识,“对类成员的阻断”是王涛大哥在其作品《你必须知道的.NET》的说法,昨天在园里看到一位前辈戏称之为“封印咒术”,我感觉这个说法很贴切。比如Sons类继承自Fathers类,在Sons中对Fathers的虚方法DoVirtualWork()实现了封印,则以后继承自Sons的类就无法继承Fathers的DoVirtualWork()方法。代码如下:
Codepublic class Fathers
{
public void DoWork()
{
Console.WriteLine("Father.DoWork()");
}
public virtual void DoVirtualWork()
{
Console.WriteLine("Father.DoVirtualWork()");
}
}
public class Sons : Fathers
{
public new void DoVirtualWork()
{
//base.DoVirtualWork();
Console.WriteLine("Son.DoVirtualWork()");
}
}
public class Grandsons : Sons
{
}
public class Sonson : Sons
{
}
class Program
{
static void Main(string[] args)
{
//调用Sons.DoVirtualWork()
Sons person1 = new Grandsons();
person1.DoVirtualWork();
//调用Sons.DoVirtualWork()
Sons person2 = new Sons();
person2.DoVirtualWork();
//调用Fathers.DoVirtualWork()
Fathers person = new Grandsons();
person.DoVirtualWork();
//调用Fathers.DoVirtualWork()
Fathers person3 = new Sonson();
person3.DoVirtualWork();
//调用Sons.DoVirtualWork()
Sonson person4 = new Sonson();
person4.DoVirtualWork();
Console.Read();
}
}
运行结果:
Son.DoVirtualWork()
Son.DoVirtualWork()
Father.DoVirtualWork()
Father.DoVirtualWork()
Son.DoVirtualWork()
所以,在类的设计中尽可能不用new阻断类成员。
转载于:https://www.cnblogs.com/happyjinyalei/archive/2009/02/26/1398080.html
总结
以上是生活随笔为你收集整理的new关键字对类成员的阻断的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: C# 设置PPT的表格样式
- 下一篇: MyEclipse小问题与汉字处理