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