我正在使用java编写游戏,并且作为问题标题建议我在我的课程中使用公共字段.(暂且)
从我所看到的公共领域是坏的,我有一些理解为什么.(但如果有人可以澄清你为什么不使用它们,那将不胜感激)
事情是,从我所看到的,(并且似乎合乎逻辑)是使用私有字段,但使用getter和setter来访问它们也不好,因为它首先破坏了使用私有字段的观点.
所以,我的问题是,有哪些替代方案?或者我真的必须使用私人领域与吸气剂和制定者?
这里是我的一个类及其一些方法的参考.
如果需要,我会详细说明.
public double health;
//The player's fields.
public String name;
public double goldCount;
public double maxWeight;
public double currentWeight;
public double maxBackPckSlts;
public double usedBackPckSlts; // The current back pack slots in use
public double maxHealth; // Maximum amount of health
public ArrayList<String> backPack = new ArrayList<String>();
//This method happens when ever the player dynamically takes damage(i.e. when it is not scripted for the player to take damage.
//Parameters will be added to make it …Run Code Online (Sandbox Code Playgroud) 我目前正在使用Java进行基于文本的冒险,以便将其用作测试平台,尝试从我正在阅读的这本Java书中学到的新东西.
我现在正在尝试声明一个子类的实例(因为播放器的脚本是为了找到它).父类是Item,它有两个子类:Weapon和Armour.
但是,无论我尝试和声明它的方式,我正在使用的IDE(Eclipse)标记该行,并出现以下错误:
不能访问类型为Item的封闭实例.必须使用Item类型的封闭实例限定分配(例如,xx是A(),其中x是Item的实例).
当我尝试将其声明为以下任何一项时:
Item machinePistol = new Weapon();
Weapon machinePistol = new Weapon();
Item machinePistol = new Item.Weapon();
Weapon machinePistol = new Item.Weapon();
Run Code Online (Sandbox Code Playgroud)
作为参考,item类看起来像这样:
package JavaAIO;
public class Item
{
public String itemName;
public double itemWeight;
public class Weapon extends Item
{
public double damage;
public double speed;
}
public class Armour extends Item
{
public double dmgResist;
public double attSpdMod;
}
}
Run Code Online (Sandbox Code Playgroud)
所以如果有人能告诉我如何正确地实例化武器(所以我可以设置其字段的值并将其交给玩家),我将非常感激.