写了很久的c# ,但对一些细枝末节也没有深纠,override和New就是
#region 重写
public class C1
{
public virtual string GetName()
{
return "byronLoong";
}
}
public class C2 : C1
{
public override string GetName()
{
return "龙龙";
}
}
C1 c1 = new C1();
Console.WriteLine(c1.GetName());//输出“byronLoong”
C2 c2 = new C2();
Console.WriteLine(c2.GetName());//输出“龙龙”
//重点看这里
C1 c3 = new C2();
Console.WriteLine(c3.GetName());//输出“龙龙”
#endregion
#region 覆盖
public class C1
{
public string GetName()
{
return "ByronLoong";
}
}
public class C2 : C1
{
public new string GetName()
{
return "龙龙";
}
}
C1 c1 = new C1();
Console.WriteLine(c1.GetName());//输出“ByronLoong”
C2 c2 = new C2();
Console.WriteLine(c2.GetName());//输出“龙龙”
//重点看这里,和上面的重写作比较
C1 c3 = new C2();
Console.WriteLine(c3.GetName());//输出“ByronLoong”
#endregion
总结
-
override是彻底的将这个父类的方法重写,而不是保留父类的方法隐藏起来;
-
new则是把父类隐藏起来,当用父类的标签时还会使用父类的标签,当用子类的标签时用子类的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/51780.html