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

三.多态

 

 

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