在C#中,override
和new
關鍵詞都用于實現方法的重寫(覆蓋),但它們之間有一些重要的區別:
override
關鍵詞用于重寫基類中的虛方法,子類中的重寫方法必須和基類中的虛方法具有相同的簽名(包括返回類型、參數列表等),并且必須使用override
關鍵詞標記。這樣做可以確保子類中的方法覆蓋了基類中的虛方法。class A
{
public virtual void Method()
{
Console.WriteLine("A");
}
}
class B : A
{
public override void Method()
{
Console.WriteLine("B");
}
}
new
關鍵詞用于隱藏基類中的方法,子類中的隱藏方法不需要和基類中的方法具有相同的簽名,但必須使用new
關鍵詞標記。這樣做可以在子類中創建一個新的方法,而不是覆蓋基類中的方法。class A
{
public void Method()
{
Console.WriteLine("A");
}
}
class B : A
{
public new void Method()
{
Console.WriteLine("B");
}
}
總的來說,override
關鍵詞用于重寫基類中的虛方法,new
關鍵詞用于隱藏基類中的方法。通常情況下,建議優先使用override
關鍵詞,因為它遵循面向對象編程的原則,可以確保代碼的可維護性和可擴展性。