小编Jam*_*mes的帖子

公共领域有哪些替代方案?

我正在使用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)

c++ java field class public

13
推荐指数
3
解决办法
1400
查看次数

如何正确声明子类的实例?

我目前正在使用Java进行基于文本的冒险,以便将其用作测试平台,尝试从我正在阅读的这本Java书中学到的新东西.

我现在正在尝试声明一个子类的实例(因为播放器的脚本是为了找到它).父类是Item,它有两个子类:WeaponArmour.

但是,无论我尝试和声明它的方式,我正在使用的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)

所以如果有人能告诉我如何正确地实例化武器(所以我可以设置其字段的值并将其交给玩家),我将非常感激.

java subclass instantiation

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

java ×2

c++ ×1

class ×1

field ×1

instantiation ×1

public ×1

subclass ×1