2017-09-15 100 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 
    } 
相关问题