新しい戦士を作成し、名前を割り当て、GameCahracterクラスで指定された関数を使用して彼の説明を取得する必要があります。私が走ろうとしているとき-それはそれをweapon.type ; // <<Exception
示すことで止まりweapon=null
ます。なんで?私の知る限り、weapon
新しいWeapon.Swordへのリンクを変数に割り当てられた戦士コンストラクター。次に、可変武器を使用して、そのフィールドにアクセスできるはずtype
です。ここで何が問題になっていますか?
abstract class GameCahracter{
public String name;
public String type;
public Weapon weapon;
public int hitPoints;
public String getDescription(){
return name + "; " +
type + "; " +
hitPoints + " hp; " +
weapon.type ; // << Exception
}
public static class Warrior extends Player{
public Warrior() {
type = "Warrior";
hitPoints = 100;
Weapon.Sword weapon = new Weapon.Sword();
}
}
abstract class Player extends GameCahracter {
}
abstract class Weapon {
public int damage;
public String type = "default";
public int getDamage(){
return this.damage;
}
public static class Sword extends Weapon{
public Sword() {
String type = "Sword";
int damage = 10;
}
}
}
GameCahracter.Warrior wr = new GameCahracter.Warrior();
wr.setName("Joe");
System.out.println( wr.getDescription());
編集1
どういうわけかdefault
、印刷時に文字列が表示されweapon.type
ます。なんで?どうすればtype
なりSword
ますか?