方法重寫是指在繼承關(guān)系中,子類重新實現(xiàn)父類或基類的某個方法。這種方法允許子類根據(jù)需要修改或擴展父類或基類的方法功能。在面向?qū)ο缶幊讨校椒ㄖ貙懯且环N多態(tài)的表現(xiàn)形式,它使得子類可以根據(jù)不同的需求和場景提供不同的方法實現(xiàn)。
方法重寫的基本規(guī)則如下:
- 方法重寫要求子類中的方法與父類或基類中的方法具有相同的方法名、返回類型和參數(shù)列表。
- 方法重寫中的方法可以有不同的實現(xiàn)邏輯,但方法名、返回類型和參數(shù)列表必須與父類或基類中的方法保持一致。
- 方法重寫只能在子類中進行,不能在父類或基類中進行。
在C#中,override
是一個關(guān)鍵字,用于在子類中重寫(覆蓋)父類中已有的虛擬方法、屬性或索引器。
當一個方法、屬性或索引器被聲明為 virtual
時,它允許子類通過 override
關(guān)鍵字來提供自己的實現(xiàn)版本。通過重寫父類的成員,子類可以修改或擴展繼承的行為,以滿足自身的需求。
下面是使用 override
的一個簡單示例:
public class Animal
{
public virtual void Speak()
{
Console.WriteLine("我是動物。");
}
}
public class Cat : Animal
{
public override void Speak()
{
Console.WriteLine("我是一只貓咪,喵喵喵~");
}
}
在這個示例中,Animal
類中的 Speak()
方法被聲明為 virtual
,表示它可以被子類重寫。Cat
類繼承了 Animal
類,并使用 override
關(guān)鍵字重寫了父類的 Speak()
方法。
通過使用 override
,Cat
類提供了自己的 Speak()
方法實現(xiàn)。當我們實例化 Cat
對象并調(diào)用 Speak()
方法時,會執(zhí)行子類重寫后的方法,輸出 "我是一只貓咪,喵喵喵~"。
總結(jié)起來,override
關(guān)鍵字用于在子類中重寫(覆蓋)父類中已有的虛擬方法、屬性或索引器。它允許子類根據(jù)自身需要修改或擴展繼承的成員的行為。通過使用 virtual
和 override
,可以實現(xiàn)多態(tài)性,在運行時根據(jù)對象的實際類型調(diào)用相應(yīng)的重寫版本。
其他案例
class Animal {
void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
void makeSound() {
System.out.println("The dog barks");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.makeSound(); // 輸出:The dog barks
}
}
在這個示例中,Dog
類繼承了 Animal
類,并重寫了 makeSound()
方法。當創(chuàng)建一個 Dog
對象并調(diào)用 makeSound()
方法時,將執(zhí)行 Dog
類中的方法實現(xiàn),輸出 "The dog barks"。
2.子類重寫了父類的方法,子類的實例化對象在調(diào)用該方法輸出子類方法結(jié)果
當子類重寫了父類的方法后,子類的實例化對象在調(diào)用該方法名字時,將輸出子類重寫的新方法的結(jié)果。這是因為在 C# 中,方法重寫遵循一種稱為“動態(tài)綁定”的規(guī)則。
動態(tài)綁定是指在運行時,根據(jù)實際的對象類型來調(diào)用相應(yīng)的方法。當子類實例化對象調(diào)用重寫的方法時,實際上是在調(diào)用子類中的新方法。因此,輸出的結(jié)果是子類重寫的新方法的結(jié)果。
以下是一個簡單的示例:
public class Animal {
public void MakeSound() {
Console.WriteLine("The animal makes a sound");
}
}
public class Dog : Animal {
public override void MakeSound() {
Console.WriteLine("The dog barks");
}
}
public class Main {
public static void Main() {
Dog dog = new Dog();
dog.MakeSound(); // 輸出:The dog barks
}
}
這個示例中,子類 Dog
重寫了父類 Animal
的 MakeSound
方法。在 Main
類中,我們創(chuàng)建了一個 Dog
對象,并調(diào)用了其 MakeSound
方法。由于動態(tài)綁定的規(guī)則,調(diào)用的是子類中的新方法,因此輸出的結(jié)果是 "The dog barks"。文章來源:http://www.zghlxwxcb.cn/news/detail-698949.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-698949.html
到了這里,關(guān)于C# 中什么是重寫(子類改寫父類方法)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!