一.多态的概念
让继承同一父类的子类们,在执行相同方法时有不同的表现.
函数重载,运算符重载是静态多态性.
virtual
override
base
简称vob
若没有多态的弊端:
class Father
{
public void SpeakName()
{
}
}
class Son : Father
{
public new void SpeakName()//重写父类方法,可以不加new,但编译器会提示你
{
}
}
//使用例
Father f = new Son();
f.SpeakName();//调用父类方法
(f as Son).SpeakName();//调用子类方法
//f又能用父类方法,又能有子类方法,破坏了对象性,是我们希望避免的!
二.利用多态
class GameObject
{
public virtual void Atk()
{
//虚函数可以被子类重写
}
}
class Player : GameObject
{
public override Atk()
{
//子类重写虚函数
//base.Atk();//这句话可以保留父类行为
}
}
class Boos : GameObject
{
public override Atk()
{
//子类重写虚函数
//base.Atk();//这句话可以保留父类行为
}
}
//使用时
GameObject p = new Player();//new什么类,就执行什么类的重写
GameObject b = new Boos();
p.Atk();//调用Player的Atk(),而不是父类的,可以对比上一个例子区别.
b.Atk();
参考资料<唐老狮C#教程>