C# 多态性示例:使用继承和虚拟方法实现不同怪物攻击
C# 多态性示例:使用继承和虚拟方法实现不同怪物攻击
本文将通过C#代码示例演示如何使用继承和虚拟方法实现多态性,使不同的怪物类拥有不同的攻击方式。我们将创建一个Monster基类,Boss和Gablin类继承自Monster,并通过遍历怪物列表来调用不同怪物的攻击方法。
using System;
using System.Collections.Generic;
// Monster基类
class Monster
{
protected string name; // 怪物名称
public Monster(string name)
{
this.name = name;
}
public virtual void Attack()
{
Console.WriteLine('普通攻击'); // 基类的攻击方法
}
}
// Boss类继承自Monster类
class Boss : Monster
{
public Boss(string name) : base(name)
{
}
public override void Attack()
{
Console.WriteLine('Boss攻击'); // Boss类的攻击方法
}
}
// Gablin类继承自Monster类
class Gablin : Monster
{
public Gablin(string name) : base(name)
{
}
public override void Attack()
{
Console.WriteLine('Gablin攻击'); // Gablin类的攻击方法
}
}
class Program
{
static void Main(string[] args)
{
List<Monster> monsters = new List<Monster>();
// 创建Boss对象并添加到怪物列表
Boss boss = new Boss('大Boss');
monsters.Add(boss);
// 创建Gablin对象并添加到怪物列表
Gablin gablin = new Gablin('小Gablin');
monsters.Add(gablin);
// 遍历怪物列表,调用各个怪物的攻击方法
foreach (Monster monster in monsters)
{
monster.Attack();
}
}
}
在上述代码中,Monster是基类,Boss和Gablin继承自Monster。它们都有各自的Attack方法。在程序中,我们创建了一个怪物列表(monsters),将Boss和Gablin对象添加到列表中。然后,通过遍历怪物列表,可以调用各个怪物对象的不同攻击方法。
输出结果可能如下:
Boss攻击
Gablin攻击
注意,我们使用了virtual和override关键字来实现多态,使得在遍历列表时能够根据对象的实际类型调用正确的攻击方法。
原文地址: https://www.cveoy.top/t/topic/lnK 著作权归作者所有。请勿转载和采集!