方法重寫(xiě)(override):多態(tài),通過(guò)父類類型對(duì)象,調(diào)用子類當(dāng)中對(duì)應(yīng)方法的實(shí)現(xiàn)。
細(xì)節(jié):子類當(dāng)中的override方法會(huì)“抹殺”父類當(dāng)中對(duì)應(yīng)virtual方法
不使用多態(tài)時(shí),父類調(diào)用子類方法時(shí),會(huì)調(diào)用父類的方法
internal class pet
{
public void shout()
{
Console.WriteLine("pet 叫");
}
public virtual void eat()
{
Console.WriteLine("pet eat food");
}
}
internal class dog : pet
{
public new void shout()
{
Console.WriteLine("dog 叫");
}
public override void eat()
{
Console.WriteLine("dog eat food");
}
}
main方法通過(guò)里氏替換調(diào)用子類shout方法
dog dog = new dog();
pet pet = dog;
pet.shout();//輸出的是父類的方法 pet 叫
那如何可以,通過(guò)父類調(diào)用子類的實(shí)現(xiàn)呢?這就要使用多態(tài)了,方法的重寫(xiě) ,父類方法使用 virtual修飾,子類同簽名方法需要override修飾,如上面的eat方法。
main方法執(zhí)行文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-687600.html
dog dog = new dog();
pet pet = dog;
pet.eat();//輸出的是子類的eat方法 dog eat food
多態(tài)性使得代碼更加靈活和可擴(kuò)展,允許我們?cè)诓恍薷默F(xiàn)有代碼的情況下增加新的功能。它也是面向?qū)ο缶幊痰闹匾匦灾?,有助于?shí)現(xiàn)代碼的模塊化和重用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-687600.html
到了這里,關(guān)于c#多態(tài)(override)的使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!