【问题标题】:How to avoid using same variable in different classes in Java?如何避免在 Java 的不同类中使用相同的变量?
【发布时间】:2017-09-15 05:00:37
【问题描述】:

我有一个超类和几个扩展超类的子类。 当我在子类中扩展抽象方法时,我使用了一个在其他子类中看起来完全相同的变量。

通常,我会将其设为全局变量,这样我就不必复制代码,但我不确定在我的情况下如何执行此操作,因为我使用的是变量中的参数。

例如,

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);


    .....

}

这是子类中实现的抽象方法。如果我把它放在外面,它不会工作,因为它正在使用参数。有什么好的方法可以防止在共享公共超类的其他子类中重复这条线吗??

【问题讨论】:

  • 我不明白你的问题。是方法声明(canMove)还是onBound计算
  • 对不起。我只是想避免在其他子类上重复 onBound 声明。
  • 您可以在超类中创建一个方法,上面写着 onBound 并在里面包含逻辑。但是,如果您根本不想看到该变量,那么您必须开始模板化您的代码。搜索常见的代码行并将它们抽象化,然后保留 canMove 的一般形式
  • =右边的表达式在所有类中都一样吗?
  • 使用不同的方法来计算带参数的 onBound 变量并创建其他不带参数的方法来使用它,因此您必须在子类中编写第二种方法的代码,您可以按原样使用第一种方法

标签: java inheritance


【解决方案1】:

在超类中写这个

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
  }

【讨论】:

    猜你喜欢
    • 2020-01-02
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-22
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多