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


          

转载于:https://www.cnblogs.com/shuaigezhaoguang/p/5869754.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值