Java:修改C类中的对象(在A类中声明,在B类中实例化)

时间:2014-05-17 20:20:25

标签: java class object interface

我正在编写一个小游戏,部分游戏是为现有的宠物界面添加商店界面。 我选择了一只猫。 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,然后启动商店界面。

非常感谢任何帮助。

1 个答案:

答案 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());