C#之封裝,繼承,多態(封裝未完成)

一. 封裝   // encapsulation

 

 

 

二.繼承   // inheritance 

直接看代碼自己調試,繼承中 一次只允許繼承一個類

下面代碼都是在一個命名空間(namespace)裏的

class Program
{
       static void Main(string[] args)
    {
        #region  繼承  inheritance  //C#中類是不能多重繼承的
        //父(基類)  Animals  //子 Dog 和 Cat   //孫:LittleDog
        //C#中類是不能多重繼承的即C#中一次只允許繼承一個類,不能同時繼承多個類。 
        Dog dog = new Dog();
        dog.Age = 12;  //繼承 子類中可繼承基類的方法
        dog.Bite();    //繼承,父類中方法關鍵字有virtual,子類中可用override重寫Bite方法
        dog.GetAge();   //繼承,子類可以獲取基類中方法
        dog.NoVirtual();   //繼承 子class可以繼承基類的方法
        dog.BitMan();    //,如果 父類中無關鍵字virtual,則子類中不能用override
        //new 的意思相當於在子類中隱藏,      
        Console.ReadLine();
        LittleDog littledog = new LittleDog();  //C#中類是不能多重繼承的
        littledog.Age = 22;  //繼承 子類中可繼承基類的方法
        Console.WriteLine("littledog.GetAge");
        littledog.GetAge();
        Console.ReadLine();


        Console.WriteLine("dog.GetAge");
        dog.GetAge();   //繼承,子類可以獲取基類中方法
        Console.ReadLine();

        Cat cat = new Cat();
        cat.Age = 33;  //繼承 子類中可繼承基類的方法
        Console.WriteLine("cat.GetAge");
        cat.GetAge();   //繼承,子類可以獲取基類中方法
        cat.Bite();    //繼承,父類中方法關鍵字有virtual,子類中可用override重寫Bite方法
        Console.ReadLine();
        #endregion
    }
}

    class Animals
    {
        public int Age { get; set; }

        public virtual void Bite()
        {
        Console.WriteLine("Animal bite");
        }

        public virtual void GetAge()
        {
        Console.WriteLine(Age);
        }

        public void NoVirtual()
        {
        Console.WriteLine("No virtual");
        }

        public void BitMan()
        {
        Console.WriteLine("Animal bite man");
        }
    }

    //sealed class Dog : Animals  //會報錯,提示錯誤“Struct.Program.LittleDog”: 無法從密封類型“Struct.Program.Dog”派生	D:\Projects\C#\Struct\Struct\Program.cs	316	15	Struct
    class Dog : Animals
    {
        public override void Bite()  //重寫
        {
        Console.WriteLine("Dog Bite");
        }
        public new void BitMan()  //如果不用new 則會有警告 warning  :“Struct.Program.Dog.BitMan()”隱藏了繼承的成員“Struct.Program.Animals.BitMan()”。如果是有意隱藏,請使用關鍵字 new。
        {
        Console.WriteLine("dog bite man");
        }
    }
    class Cat : Animals
    {
        public override void Bite()  //重寫
        {
        Console.WriteLine("Cat Bite");
        }
    }
    class LittleDog : Dog
    {
        public override void Bite()  //重寫
        {
        Console.WriteLine("ddd Bite");
        }
    }

運行結果:

引用:https://www.cnblogs.com/yanyao/p/4830768.html

三.多態

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章