具有固定值的对象

Spr*_*bua 1 java class object

我正在开发一款游戏.我有一个类的武器,不同的子类,如Shotgun,Mg...现在我希望能有具体的武器,像AK47有30发子弹的弹药伤害等.同样的事情,是中高级车的10分.例如兰博基尼的固定最高速度为300公里/小时,而座椅利昂的固定最高速度为200但仍然是汽车(或子类?).我该怎么做?兰博基尼是构造函数中具有固定值的汽车的子类吗?我是否应该为汽车类或文件中的每辆汽车的值保持常量?希望我很清楚.谢谢

编辑:我认为我不够清楚.我需要"保存"汽车的默认值(兰博基尼:max peed 300 ...),这样在游戏中玩家可以拥有兰博基尼并且它总是最大速度300.由于兰博基尼,子类的选项现在消失了只是一个汽车的实例.所以现在我的问题:在文件中或作为类车中的静态常量?例如:

public class car  {
   public static final int SPEED_LAMBORGHINI = 300

   // rest of class car
}
Run Code Online (Sandbox Code Playgroud)

我认为文件设计会更好但是不需要Long从文件加载所需的武器吗?

Old*_*eon 5

一般一个兰博基尼将是Car一个name类型的字段String值为"兰博基尼"等maxSpeed类型的字段int和值300.

我猜其余的事情变得很明显.

基本上 - 为不同Form的对象使用不同的类.你很少需要每个具有不同类的对象.

一个德罗宁将是一个Car而是时间旅行德罗宁可能是不同的类.

但是 - 由于enum现在可以使用,您可以考虑:

enum Car {
    Lamborghini(300),
    Seat(200);

    final int topSpeed;

    private Car(int topSpeed) {
        this.topSpeed = topSpeed;
    }
}
Run Code Online (Sandbox Code Playgroud)

添加

至于你在哪里存储详细信息的查询 - 我会在代码中放置默认值,但允许每个对象从一个属性文件中修改该值.在enum这里帮了不少忙,你可以把这样的:

TopSpeed.Lamborghini=286
Run Code Online (Sandbox Code Playgroud)

在您的属性文件中,并enum自动调整它.

添加

请记住,enums应尽可能接近常量.不要试图扩展它们或改变它们的属性(可能在开始时除外).

要使用此表单,您需要以下内容:

class Player {
  Car vehicle = Lamborghini;
  ...
Run Code Online (Sandbox Code Playgroud)