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攻击

注意,我们使用了virtualoverride关键字来实现多态,使得在遍历列表时能够根据对象的实际类型调用正确的攻击方法。

C# 多态性示例:使用继承和虚拟方法实现不同怪物攻击

原文地址: https://www.cveoy.top/t/topic/lnK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录