c# 重写基类方法时,Override 和 New 的区别
这里是msdn,可是看不懂http://msdn.microsoft.com/zh-cn/library/ms173153(VS.80).aspxchristiankul...
这里是msdn,可是看不懂
http://msdn.microsoft.com/zh-cn/library/ms173153(VS.80).aspx
christiankula说的应该不错,能不能找个例子 展开
http://msdn.microsoft.com/zh-cn/library/ms173153(VS.80).aspx
christiankula说的应该不错,能不能找个例子 展开
展开全部
override就是子类将父类的方法重新实现了一遍。
new就是说这个方法就是子类自己的,跟父类没有任何继承关系关系,仅仅是重名
public class A
{
public virtual string Function()
{
return "1";
}
}
public class B : A
{
public override string Function()
{
return "2";
}
}
public class C : A
{
public new string Function()
{
return "3";
}
}
public class JustForTest
{
public void DoTest()
{
B b = new B();
C c = new C();
Console.WriteLine(b.Function());
Console.WriteLine(c.Function());
Console.WriteLine((b as A).Function());//这两个就体现出来了,B还是调用自己,返回2
Console.WriteLine((c as A).Function());//C调用的是基类,返回0
}
}
new就是说这个方法就是子类自己的,跟父类没有任何继承关系关系,仅仅是重名
public class A
{
public virtual string Function()
{
return "1";
}
}
public class B : A
{
public override string Function()
{
return "2";
}
}
public class C : A
{
public new string Function()
{
return "3";
}
}
public class JustForTest
{
public void DoTest()
{
B b = new B();
C c = new C();
Console.WriteLine(b.Function());
Console.WriteLine(c.Function());
Console.WriteLine((b as A).Function());//这两个就体现出来了,B还是调用自己,返回2
Console.WriteLine((c as A).Function());//C调用的是基类,返回0
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询