C#复习之隐藏方法和重写方法

编译时的不同:

     重写

父类有方法Identity(),并且必须使用virtual或abstract修饰(abstract修饰的话,该类也必须用abstract修饰),则子类可以用override进行重写。

      隐藏方法:

     与重写方法不同,父类方法不能用abstract修饰,可以用virtual或者不做申明。子类用new关键字声明此方法的隐藏。

运行时的不同:

    测试代码如下
    class Program
    {
        static void Main(string[] args)
        {
            Father a = new Father();
            Child b = new Child();
            a.Identity();
            b.Identity();
            Father c = new Child();
           
            c.Identity();
            Console.ReadKey();
        }
    }
    class Father
    {
        public int a = 5;
        public virtual  void Identity()
        {
            a = 10;
            Console.WriteLine("我是父类"+a);
            
        }
    }
    class Child : Father
    {
        public new void Identity()
        {
            //base.Identity();
            Console.WriteLine("我是子类"+a);
        }
    }

运行结果证明:重写: 调用方法会根据引用指向的实际对象进行调用。隐藏方法会根据引用进行调用。同时重写的方法如果想先运行父类的方法再运行子类的方法的话可以通过base点出父类的方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值