C#基础或模板类?

时间:2013-03-06 13:24:05

标签: c# inheritance base-class

好的,所以我正在使用XNA进行游戏,我希望所有的敌人都从一个名为“baseEnemy.cs”的基类扩展。例如,我想让一个僵尸有一个名为“zombie.cs”的类,但是让它进入“baseEnemy.cs”。

我想我会记得被告知它的布局如下:

class zombie : baseEnemy
{

}

但是我假设使用get {}和set {}会帮助我改变作为baseEnemy.cs的一部分存在的zombies.cs中当前变量的值...如果这有意义吗?我不明白get {}和set {}的用法,但我已经在其他语言中看到了它(例如我的代码),我认为它们在工作中是相似的。

所以,说我对敌人的速度有一个漂浮......我不希望所有的敌人以相同的速度移动(僵尸的速度应该是低速等)。我如何从baseEnemy.cs获得速度并将其设置为zombie.cs中的速度。

或者我会更好地在baseEnemy.cs中公开变量?

很抱歉,如果以上内容没有多大意义,我对XNA或使用的术语不太熟悉,因此我可能听起来像是围成一圈:S

1 个答案:

答案 0 :(得分:2)

您正在寻找所谓的抽象方法抽象属性

abstract class Enemy
{
    public abstract float GetSpeed();
}

class Zombie : Enemy
{
    public override float GetSpeed()
    {
        return 10;
    }
}

请注意类名和方法名前面的abstract关键字。子类必须实现所有抽象成员,如果它本身不是抽象成员的话。实现抽象成员时,必须使用override关键字。

您要描述的get set语法称为属性。它是一个特殊的C#构造,用于组织字段的getter和/或setter并将它们放在一个块中。与上面相同的示例使用属性:

abstract class Enemy
{
    public abstract float Speed { get; }
}

class Zombie : Enemy
{
    public override float Speed
    {
        get { return 10; }
    }
}