欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#之封装 ,继承,多态

程序员文章站 2022-05-29 09:56:38
...

一. 封装   // encapsulation

 

 

 

二.继承   // inheritance 

直接看代码自己调试,继承中 一次只允许继承一个类

下面代码都是在一个命名空间(namespace)里的

        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");
            }
        }

运行结果:

C#之封装 ,继承,多态

 

三.多态

 

 

相关标签: 基本知识