我正在编写一个小游戏,部分游戏是为现有的宠物界面添加商店界面。 我选择了一只猫。 Cat类包含Cat对象构造函数。
public Cat(String aName, Gender aGender ,String aTrait,String aAgeEffect,int aWeight, int aPetDay, int aPetMonth, int aPetYear, String aWhiskerLength, String aFurColour, String aEyeColour){
super(aName, aGender , aTrait, aWeight, aAgeEffect, aPetDay, aPetMonth, aPetYear);
petDay = aPetDay;
petMonth = aPetMonth;
petYear = aPetYear;
whiskerLength = aWhiskerLength;
furColour = aFurColour;
eyeColour = aEyeColour;
penaltyPoints = 0;
}
然后,Cat_Interface类使用用户输入设置Cat的实例。
public Cat_Interface() {
final Cat cat = new Cat(name, null, trait, null, 50, day, month, year, null, fur, eye);
}
(名称等等变量是我用来传递用户输入的临时变量.Cat对象确实有用。我已经多次测试过,所有值都正确传递。)
现在我的问题开始出现了,当我创建PetShopInterface类时,尝试使用在Cat_Interface类(cat)中创建的对象。
我尝试这个,例如,当我有商店设置的界面时:
public void buyBed() {
System.out.println(Cat_Interface.cat.getName());
}
只是看看会发生什么。我得到一个空指针指向这段代码。 这不应该发生,因为我首先运行Cat_Interface类,设置一个新Cat,然后启动商店界面。
非常感谢任何帮助。
答案 0 :(得分:0)
public Cat_Interface() {
final Cat cat = new Cat(...);
}
这会在构造函数的范围内创建一个新的cat。你想要这样的东西:
public final Cat cat;
public Cat_Interface() {
cat = new Cat(...);
}
然后你需要实例化它:
Cat_Interface ci = new CatInterface();
System.out.println(ci.cat.getName());