1. 程式人生 > >49.C#--多態之抽象類

49.C#--多態之抽象類

[] 調用 允許 code 類對象 () ima 方法 一個

static void Main(string[] args)
{
//抽象類例子:狗狗會叫,貓咪也會叫
//實現多態,抽象類不能創建父類對象,所以只能指向子類
//調用狗狗會叫的方法,創建一個子類對象賦值給父類
Animal a = new Dog();
//a雖然表現出來的是父類對象,但父類被子類重寫了,所以最終輸出的子類的方法
//具體調哪個函數,取決於a裝的是哪個子類的對象
a.Bark();
////調用貓咪會叫的方法
//Animal a = new Cat();
//a.Bark();

        Console.ReadKey();

    }

    //當父類中的函數不知道怎麽實現的時候,可以將這個類寫成抽象類,方法寫成抽象方法
    public abstract class Animal
    {
        //註意:抽象方法是不允許有方法體的
        //寫成抽象方法主要是不知道怎麽實現叫這個函數
        //抽象類存在意義是讓子類重寫,實現多態
        public abstract void Bark();
    }
    //創建狗狗抽象類子類,並重寫父類
    public class Dog : Animal
    {
        public override void Bark()
        {
            Console.WriteLine("狗狗汪汪叫!");
        }
    }
    //創建貓咪抽象類子類,並重寫父類
    public class Cat : Animal
    {
        public override void Bark()
        {
            Console.WriteLine("貓咪喵喵叫!");
        }
    }

49.C#--多態之抽象類