class Boss : Enemy
{
public override void Move()
{
Console.WriteLine("这里是Boss的共有Move方法");
}
public void Attack()
{
Console.WriteLine("Boss正在进行攻击");
Move();
}
}
如果单纯用override函数写一遍的话是不会输出是吗?如果调用的呢?
为什么要在这个Attack的方法里面重写一遍?不是很理解,请解答,谢谢。
虚方法来自类的思想。
假设有一个动物类,每种动物有不同的叫声,你有一个笼子类来管理各种不同的动物,你不知道笼子里动物都是什么动物。你只能枚举笼子里的动物,然后调用动物类里面的“叫声”方法。这时候,如果这个动物是狗,那么他应该会叫“旺旺”,如果是猫,他应该会叫“喵喵”,使用虚方法,你可以不必关系动物具体是什么动物,只要知道它是个动物就好了。
class 动物
{
public vritual void 叫声() { }
}
class 狗 : 动物
{
public override void 叫声 () { print("旺旺"); }
}
class 猫 : 动物
{
public override void 叫声() { print(“喵喵”); }
}
class 笼子
{
protected List<动物> m_aniLists;
public void 把一个动物放进笼子( 动物 a )
{
m_aniLists.Add( a );
}
public void 让动物们叫()
{
foreach( 动物 a in m_aniLists )
{
a.叫声();
}
}
}
class Program {
static void main(){
笼子 lz = new 笼子(); // 创建一个笼子
lz.把动物关进笼子( new 狗()); // 把一只狗关进笼子
lz.把动物关进笼子( new 猫()); // 把一只猫关进笼子
lz.让动物们叫(); // 让动物们自己叫
}
}