好的,所以我正在使用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
答案 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; }
}
}