寫了很久的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則是把父類隐藏起來,當用父類的标簽時還會使用父類的标簽,當用子類的标簽時用子類的方法。