gpt4 book ai didi

java - 访问另一个类中的方法

转载 作者:行者123 更新时间:2023-12-02 06:26:27 26 4
gpt4 key购买 nike

我有一个 Worker 类,我想从 hive、garden 和父类(super class) Flower 的所有子类访问方法。一个 worker 位于花园中的 hive 的数组列表中,花园也有一个鲜花的数组列表。我已经使用构造函数从 hive 访问了方法:

public worker(Hive hive){
this.hive= hive
}

我想从花园中访问方法 findFlower() 来获取一朵花,并从我得到的花中访问 extractPollen() (每种类型的花都继承自父类(super class)花)以从中获取花粉。我是否需要为花园和每种花卉制作更多构造函数,或者 2 个构造函数(1 个用于花园,1 个用于 super 构造函数花卉)可以工作吗?

到目前为止我的代码:

public class Worker extends Bee {

Hive hive = null;
public Garden garden;
public Flower flower;

public Worker(Hive hive){
this.hive=hive;
this.type = 2;
this.age=11;
this.health=3;
}

public Bee anotherDay(){
flower= garden.findFlower();
flower.extractPollen(int);
eat();
age++;
}
}

public class Garden{

ArrayList<Flower> flowerbed = new ArrayList<Flower>();

public Flower findFlower(){
//code which returns a random flower from my arraylist
}
}

public class Flower{

public boolean extractPollen(int po){
if(po <= pollen){
pollen= pollen - po;
return true;
}return false;
}
}

最佳答案

我可以建议这个...

没有 hive 或花园, worker 就无法“工作”。两者都供应。另外,flower 不需要是成员变量。它是 anotherDay() 的本地变量。另外,anotherDay() 不需要返回 Bee。无论如何,调用者都会引用您的对象。

public class Worker extends Bee {
private Hive hive;
private Garden garden;

public Worker(Hive hive, Garden garden){
super(hive);
this.hive=hive;
this.garden = garden;
this.type = 2;
this.age=11;
this.health=3;
}

public void anotherDay(){
Flower flower = garden.findFlower();
flower.extractPollen(/* some value */);
eat();
age++;
}
}

另一种方法是 Hive 和 Garden 根本不是成员,而是在每次方法调用时传入。例如 anotherDay(Garden Garden); 这样做的好处是您的员工可以在花园里漫步。缺点是调用代码必须管理 Garden 对象。这些是您在进行 OO 设计时所做的权衡:)

关于java - 访问另一个类中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com