2017-09-15 68 views
0

我有一個超類和擴展超類的子類。 當我在子類中擴展抽象方法時,我使用了一個在其他子類中完全相同的變量。如何避免在Java的不同類中使用相同的變量?

通常,我只是把它作爲一個全局變量,所以我不必重複代碼,但我不知道如何在我的情況下這樣做,因爲我使用變量中的參數。

例如,

public abstract boolean canMove(Piece[][] board, int fromX, int fromY, int toX, int toY); 
//This is the abstract method in the super class 

@Override 
public boolean canMove(Piece[][] board, int startX, int startY, int endX, int endY) { 

    boolean onBound = (0 <= endX && endX < Board.NUM_OF_ROWS) && (0 <= endY && endY < Board.NUM_OF_COLS); 


    ..... 

} 

這裏是在子類中所實現的抽象方法。如果我把它放在外面,它將不起作用,因爲它使用的是參數。有沒有一種好方法可以防止在共享公共超類的其他子類中重複這一行?

+0

覆蓋我不明白您的問題。它與方法聲明(canMove)或onBound計算 – Mehdi

+0

抱歉。我只是想避免重複其他子類上的onBound聲明。 – user6792790

+0

您可以在超類中創建一個方法,該方法表示onBound並具有裏面的邏輯。但是,如果你不想看到這個變量,那麼你必須開始模板代碼。搜索常見的代碼行並將其抽象出來,然後保留canMove的一般形式 – Mehdi

回答

2

寫這篇文章的超級類

public boolean canMove(Piece[][] board, int startX, int startY, int 
endX, int endY) { 
    boolean onBound = (0 <= endX && endX < Board.NUM_OF_ROWS) && (0 <= endY && endY < Board.NUM_OF_COLS); 
anotherMethod(onBound, any_other_parameters); 
    } 

//在子類中

@Override 
    anotherMethod(onBound , parma){ 
     //your code 
    } 
相關問題