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