日期:2014-05-20  浏览次数:20745 次

如果坦克和子弹有相同的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传递不同的参数即可。类似于
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;
    }
}