参考另一个类中的方法

时间:2013-12-06 01:40:24

标签: java methods constructor

我有一个名为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;
        }   
    }
} 

3 个答案:

答案 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;
}

当然,还给女王一个叫做蜂巢的领域。然后你就可以使用它了。