我有一个名为Hive的类,其中包含一些实例变量,例如Honey。我有另一个名为Queen的类,我想使用一个名为takeHoney()的方法,我在我的蜂巢类中删除2个单位的蜂蜜(如果有的话)。我试图做的是向Queen类添加一个构造函数,它将Hive作为参数并将其存储在本地,这样我就可以从Queen访问Hive中的方法,但它不起作用。有什么问题?
public class Queen extends Bee{
int type = 1;
public Queen(Hive hive){
}
public Queen(int type, int age, int health){
super(type, age, health);
}
public Bee anotherDay(){
return this;
}
public boolean eat(){
if(Hive.honey > 2){
hive.takeHoney(2);
return true;
}else{
return false;
}
}
}
答案 0 :(得分:2)
你必须创建一个Hive实例来从Hive调用方法
public class Queen extends Bee{
int type = 1;
--> Hive hive = null;
public Queen(Hive h){
--> hive = h;
}
public Queen(int type, int age, int health){
super(type, age, health);
}
public Bee anotherDay(){
return this;
}
public boolean eat(){
--> if(hive.honey > 2){
hive.takeHoney(2);
return true;
}else{
return false;
}
}
}
答案 1 :(得分:2)
你是指静态的Hive。您需要实例化它,然后调用该对象上的方法。
public class Queen extends Bee{
int type = 1;
Hive h;
public Queen(Hive hive){
h = hive;
}
public Queen(int type, int age, int health){
super(type, age, health);
}
public Bee anotherDay(){
return this;
}
public boolean eat(){
if(h.honey > 2){
h.takeHoney(2);
return true;
}else{
return false;
}
}
}
答案 2 :(得分:1)
这绝对没有:
public Queen(Hive hive){
}
您将其分配到班级中的某个字段?回答你没有。
解决方案:你应该!
public Queen(Hive hive){
this.hive = hive;
}
当然,还给女王一个叫做蜂巢的领域。然后你就可以使用它了。