第一次使用它来提问,但我希望我能得到答案。
所以我的问题是,我正在编写一个程序,该程序连接到机器人(在本例中为机器人乐高(EV3或NXT))。每个机器人都有自己的启动类别,EV3具有“ xxxEV3”和NXT“ xxxNXT”。因为我并不总是需要物理机器人,所以我创建了一个新类(我称为myRobot),该类具有与其他两个类相同的方法,到目前为止,我使用的是相同的“变量”(相同名称)进行测试,但是每当我更换物理机器人时,我都必须注释这行,这样就不会有任何问题。
示例:
class gui extends.... {
//private myRobot robot;
//private xxxEV3 robot;
private xxxNXT robot;
public gui() {
//robot = new myRobot();
//robot = new xxxEV3();
robot = new xxxNXT();
...
}
public void move(int dist) {
robot.move(dist);
}
}
如您所见,每次我更改所使用的机器人的“类型”时,我都必须发表评论,以免出现任何错误。
所以现在我想在GUI上添加一个下拉列表,如果我选择myRobot,它将使用与上面相同的名称(机器人)启动myRobot类;或者,如果我选择EV3,它将使用机器人作为名称启动xxxEV3类。的变量...
我希望我已经足够清楚地得到答案,因为我自己却无法理解。
答案 0 :(得分:0)
否,由于设置类型时的混乱,这是不可能的。但是,实现此目的的一种方法是使用继承,并从基本Robot界面扩展myRobot,EV3,xxxEV3等。
public interface Robot {
public void move(int distance);
}
public class myRobot implements Robot {
public void move(int distance) {
// implementation here
}
}
答案 1 :(得分:0)
您可以创建一个类似于“ selectedRobot”的变量,并在代码中使用它,并在需要时为其分配所有的机器人。