如果坦克和子弹有相同的move方法怎么处理
如果坦克和子弹有相同的move方法怎么办
对,整个结构都一样,只是它们移动的speed不同
我有2个解决方案
1:直接把代码贴过来,感觉这不是最佳方案
2:构造一个gameitem类,并写好move方法,然后tank和missile都去继承这个gameitem
但是2的缺点是,方法中的所有参数都只能是变量,如果用常量的话,坦克和子弹的速度就一样了
而我又希望tank和missile的子弹速度被设置成常量,变量总觉得不合适,这该怎么解决?
------解决方案--------------------
这不很简单吗。。
class Gameitem{
public static move(int speed){
}
}
class Tank{
static final int SPEED = 100;
move(){
Gameitem.move(Tank.SPEED);
}
}
------解决方案--------------------
继承就好了,只是在调用的时候tank和missile传递不同的参数即可。类似于
对,整个结构都一样,只是它们移动的speed不同
我有2个解决方案
1:直接把代码贴过来,感觉这不是最佳方案
2:构造一个gameitem类,并写好move方法,然后tank和missile都去继承这个gameitem
但是2的缺点是,方法中的所有参数都只能是变量,如果用常量的话,坦克和子弹的速度就一样了
而我又希望tank和missile的子弹速度被设置成常量,变量总觉得不合适,这该怎么解决?
------解决方案--------------------
这不很简单吗。。
class Gameitem{
public static move(int speed){
}
}
class Tank{
static final int SPEED = 100;
move(){
Gameitem.move(Tank.SPEED);
}
}
------解决方案--------------------
继承就好了,只是在调用的时候tank和missile传递不同的参数即可。类似于
- Java code
public class Test { public static void main(String[] args) { Gameitem g1 = new Tank("Tank"); Gameitem g2 = new Tank("Missile"); g1.move(); g2.move(); } } class Gameitem{ public String name; public void move(){ System.out.println(name + " move..."); } } class Tank extends Gameitem{ public Tank(String name){ super.name = name; } } class Missile extends Gameitem{ public Missile(String name){ super.name = name; } }