使用具有不同参数的抽象类中的方法

时间:2018-02-14 13:45:36

标签: java android oop

我觉得我应该知道该怎么做,但我有点挣扎。

我想在Android上制作一个连接4游戏。

为此,我有一个通用的“多人游戏”库,其中包含一些我必须为Connect 4实现的抽象类。

因此,我将“Board”(tablero)类实现为“TableroC4”类,将类“Movement”实现为“MovementC4”;但我的问题是“Tablero”有一个叫做“mueve”(移动)的函数,它带有一个参数的“运动”对象,这阻止了我,因为我不能通过我的“MovementC4”也不能留空(否则我'我没有实现抽象类)。

以下是我班级的部分内容,可能会更清楚:

public abstract class Tablero {  
    protected abstract void mueve(Movimiento m) throws ExcepcionJuego;
    [...]
}

abstract public class Movimiento {  
    [....]
}

public class MovimientoC4 extends Movimiento {
    [....]
}

public class TableroC4 extends Tablero {
     public void mueve(Movimiento m){  //here, i want to pass a MovimientoC4 object
     //If i do pass a MovimientoC4 object, i get an error saying that my class doesn't implement "mueve" and should be abstract
         [....]
     }
}

我该怎么办?

编辑:

我天真地尝试将“MovimientoC4”作为参数,就像这样(在TableroC4的mueve方法中):

public class TableroC4 extends Tablero {

    public void mueve(MovimientoC4 m) throws ExcepcionJuego{

    }

这给了我以下内容:     “错误:TableroC4不是抽象的,并且不会覆盖Tablero中的抽象方法mueve(Movimiento)”

我尝试了以下内容:

public class TableroC4 extends Tablero {

public void mueve(Movimiento m) throws ExcepcionJuego{

}

public void mueve(MovimientoC4 m) throws ExcepcionJuego{

}

这令人惊讶,但我对这个解决方案不满意。

1 个答案:

答案 0 :(得分:2)

您不能在子类中传递其他参数。您可以做的是保留该签名并在实施开始时添加演员检查