嘗試獲取子級嵌套靜態類的字段值時,獲取null
。 * 1 *每個類文件用水平線分隔。如何檢索孩子戰士的價值?無法獲取具有抽象父級的子級嵌套類的字段
abstract class GameCahracter{
public String name;
public String type;
public Weapon weapon;
public int hitPoints;
public String getDescription(){
return type + "; " + name + "; " + hitPoints + " hp; " + weapon.type;
}
public static class Warrior extends Player{
public final String type = "Warrior";
public int hitPoints = 100;
public static final Weapon.Sword weapon = new Weapon.Sword();
}
}
abstract class Player extends GameCahracter {
}
GameCahracter.Warrior wr = new GameCahracter.Warrior();
wr.name = "Joe";
System.out.println(wr.getDescription());
OUTPUT:
null; Joe; 0 hp; null
*公共成員變量是一個壞主意。*。你的意思是我應該將* Warrior *課程定義爲私人課程嗎?如果是這樣,那我該如何訪問它? – 2012-04-14 14:32:37
@RCola:您可以根據需要使getter/setter方法提供訪問權限。這允許您保持類的API保持不變,即使您改變了內部結構類的方式。使用方法而不是公共成員也可以驗證輸入。目前任何人都可以將hitPoints設置爲1000或-1000。 – unholysampler 2012-04-14 14:37:08