多态的概念
多态按字面的意思就是“多种状态”
让继承同一父类的子类们 在执行相同方法时有不同的表现(状态)
主要目的
同一父类的对象 执行相同行为(方法)有不同的表现
解决的问题
让同一个对象有唯一行为的特征
解决的问题
class Father
{
public void SpeakName()
{
Console.WriteLine("Father的方法");
}
}
class Son:Father
{
public new void SpeakName()
{
Console.WriteLine("Son的方法");
}
}
Father f = new Son();
f.SpeakName();
(f as Son).SpeakName();
多态的实现
运行时多态( vob、抽象函数、接口 )
v: virtual(虚函数)
o: override(重写)
b: base(父类)
class GameObject
{
public string name;
public GameObject(string name)
{
this.name = name;
}
//虚函数 可以被子类重写
public virtual void Atk()
{
Console.WriteLine("游戏对象进行攻击");
}
}
class Player:GameObject
{
public Player(string name):base(name)
{
}
//重写虚函数
public override void Atk()
{
//base的作用
//代表父类 可以通过base来保留父类的行为
base.Atk();
Console.WriteLine("玩家对象进行攻击");
}
}
class Monster:GameObject
{
public Monster(string name):base(name)
{
}
public override void Atk()
{
Console.WriteLine("怪物对象进行攻击");
}
}
多态的使用
GameObject p = new Player("唐老狮");
p.Atk();
(p as Player).Atk();
GameObject m = new Monster("小怪物");
m.Atk();
(m as Monster).Atk();
总结:
多态:让同一类型的对象,执行相同行为时有不同的表现
解决的问题: 让同一对象有唯一的行为特征
vob:
v:virtual 虚函数
o:override 重写
b:base 父类
v和o一定是结合使用的 来实现多态
b是否使用根据实际需求 保留父类行为