簡體   English   中英

使用抽象類中具有不同參數的方法

[英]Using a method from an abstract class with different parameters

我覺得我應該知道該怎么做,但是我為此感到掙扎。

我想在Android上進行Connect 4游戲。

為此,我有一個通用的“多人游戲”庫,其中包含一些我必須為Connect 4實現的抽象類。

因此,我將“ Board”(tablero)類實現為“ TableroC4”類,將“ Movement”類實現為“ MovementC4”; 但是我的問題是“ Tablero”具有一個名為“ mueve”(移動)的函數,該函數需要一個“ Movement”對象作為參數,這阻止了我,因為我無法傳遞“ 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{

}

令人驚訝的是,哪種方法有效,但是我對這種解決方案不滿意。

您不能在子類中傳遞其他參數。 您可以做的就是保留該簽名,並在實施開始時添加強制轉換檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM