C# Override与Virtual的使用

在实际运用中,有很多对象具有很多相同属性,但是有些属性是不同的,直接copy重新写一个类的话,如果统一需要修改,那么每个对象都需要改,就出现了继承。

通过Virtual和Override关键字,可以做出区别。

下面一个例子,假设Father拥有变年轻的能力,重回30岁的巅峰。

	class Father
    {
        //public int Age { get; set; }
        public virtual void Youthon()
        {
            Console.WriteLine("Age = 30");
        }
    }

他生的女儿Daughter觉得这个能力不能满足,就变异了这个能力,可以重回18岁。

    class Daughter : Father
    {
        public override void Youthon()
        {
            Console.WriteLine("Age = 18");
        }
    }

他生的儿子Son都有点懒,不想变异。

    class Son : Father
    {

    }

再来个AdoptedSon干儿子吧(性别用完了),这个除了原封不动的继承了父亲的能力,还要证明自己大吼一声adopted。

    class AdoptedSon : Father
    {
        public override void Youthon()
        {
            base.Youthon();
            Console.WriteLine("I am adopted");
        }
    }

最终来看看这4种人的能力。

  	class Program
    {
        static void Main(string[] args)
        {
            Father father = new Father();
            Son son = new Son();
            Daughter daughter = new Daughter();
            AdoptedSon baby = new AdoptedSon();
            List<Father> list = new List<Father>();
            list.Add(father);
            list.Add(son);
            list.Add(daughter);
            list.Add(baby);
            foreach (var item in list) { item.Youthon(); }

            Console.ReadLine();
        }
    }

儿子遗传了父亲;女儿覆盖了父亲;养子除了遗传了父亲,还有别的能力。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值