Java 无法获取具有抽象父类的子嵌套类的字段

Java 无法获取具有抽象父类的子嵌套类的字段,java,oop,Java,Oop,当尝试获取子嵌套静态类的字段值时,获取null*1*每个类文件被水平线分割。如何检索儿童战士的价值观 输出: null; Joe; 0 hp; null 不要重新声明成员变量。相反,您应该在构造函数内设置值 public static class Warrior extends Player{ public Warrior() { type = "Warrior"; hitPoints = 100; weapon = new Weapon.S

当尝试获取子嵌套静态类的字段值时,获取
null
*1*每个类文件被水平线分割。如何检索儿童战士的价值观





输出:

null; Joe; 0 hp; null

不要重新声明成员变量。相反,您应该在构造函数内设置值

public static class Warrior extends Player{
    public Warrior() {
      type = "Warrior";
      hitPoints = 100;
      weapon = new Weapon.Sword(); 
    }
}
另一个选项是创建一个
GameCahracter
构造函数,该构造函数接受与每个成员变量匹配的参数


附带说明:公共成员变量是个坏主意。

不要重新声明成员变量。相反,您应该在构造函数内设置值

public static class Warrior extends Player{
    public Warrior() {
      type = "Warrior";
      hitPoints = 100;
      weapon = new Weapon.Sword(); 
    }
}
另一个选项是创建一个
GameCahracter
构造函数,该构造函数接受与每个成员变量匹配的参数


附带说明:公共成员变量是个坏主意。

GameCahracter.name
GameCahracter.hitPoints
未分配,因此它们保持为空<代码>战士。名称和
战士点数。生命值
已分配,但它们是不同的字段。在父项和子项中使用相同名称的字段是个坏主意(与方法不同)。

GameCahracter.name
GameCahracter.hitPoints
未分配,因此它们保持为空<代码>战士。名称和
战士点数。生命值
已分配,但它们是不同的字段。在父级和子级中使用同名字段是个坏主意(与方法不同)。

公共成员变量是个坏主意。。你是说我应该把战士职业定义为私人职业吗?如果是,那么我如何访问它?@RCola:您可以根据需要创建getter/setter方法来提供访问。这允许您保持类的API不变,即使您更改了类的内部结构。使用方法而不是公共成员还允许您验证输入。目前,任何人都可以将
生命值设置为1000或-1000。公共成员变量是个坏主意。。你是说我应该把战士职业定义为私人职业吗?如果是,那么我如何访问它?@RCola:您可以根据需要创建getter/setter方法来提供访问。这允许您保持类的API不变,即使您更改了类的内部结构。使用方法而不是公共成员还允许您验证输入。目前,任何人都可以将
生命值设置为1000或-1000。
null; Joe; 0 hp; null
public static class Warrior extends Player{
    public Warrior() {
      type = "Warrior";
      hitPoints = 100;
      weapon = new Weapon.Sword(); 
    }
}