c#学习历程3

多态

class Animal
    {
        private int age;
        public int Age
        {
            set{ age = value;}
            get{ return age;}
        }
        public virtual void Voice()
        {
            Console.WriteLine ("Animal");
        }
    }
class House:Animal
    {
        public override void Voice()
        {
            Console.WriteLine ("House");
        }
    }
class Sheep:Animal
    {
        public override void Voice()
        {
            Console.WriteLine ("Shpeep");
        }
    }


// 多态 ( 一个方法多种状态 )
             Animal   a   =   new   House   () ;
             Animal   b   =   new   Sheep   () ;
             Method   ( a ) ;
             Method   ( b ) ;
             // 如果没虚函数,则10个动物需要写10个方法,每次不同对象调用method ,
             //就需要写该对象的方法,如果有虚函数,则形参只需要为父对象,
             //通过父类指向类实现调用不同子类的方法,替代了原来的10种子类的方法,从而实现多态

只有虚方法才能被重写

abstract   class   Class
     {
         // 抽象类相当于c + +纯虚函数
         public   abstract   void   print () ;
     }
     class   ClassA : Class
     {
         // 可以重写抽象类 ( abstract ) 和虚函数 ( virture )override
         public   override   void   print ()
         {
             Console . WriteLine   ( " Class   A " ) ;
         }
     }
     class   ClassB : ClassA
     {
         public   override   void   print ()
         {
             Console . WriteLine   ( " Class   B " ) ;
         }
     }

 子类继承与父类的虚方法,虽然该子类重写虚方法,但它还是虚方法,下代们的子类可以重写虚方法  

隐藏
子类可以隐藏父类的方法,不过在c#中会发出警告,添加一个new就ok了
使用new修饰,可以隐藏同名函数。

class ClassA//没有指定继承,则默认继承object
    {
        public int x;
        public int y;
        public ClassA(int _x,int _y)
        {
            x = _x;
            y = _y;
        }
        public void Method()
        {
            Console.WriteLine ("classA Method");
        }
    }
    class ClassB:ClassA
    {
        public int z;
        public ClassB(int _x,int _y,int _z):base(_x,_y)//只能用base(父类)
        {
            z=_z;
        }
        public new void Method()
        {
            Console.WriteLine ("classB Method");
        }
    }


          

猜你喜欢

转载自blog.csdn.net/qq131530624/article/details/52493182
今日推荐