C# Override与Virtual的使用

it2022-05-05  224

在实际运用中,有很多对象具有很多相同属性,但是有些属性是不同的,直接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(); } }

儿子遗传了父亲;女儿覆盖了父亲;养子除了遗传了父亲,还有别的能力。


最新回复(0)