在实际运用中,有很多对象具有很多相同属性,但是有些属性是不同的,直接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(); } }儿子遗传了父亲;女儿覆盖了父亲;养子除了遗传了父亲,还有别的能力。