【发布时间】:2018-06-20 21:51:41
【问题描述】:
在 OOP 的良好实践中,我试图将我的一些方法分成两个类(不是主类)。
两个类都需要这个特定的二维数组,以便正确执行程序的功能:
private char [][] board = new char[7][8];
我不确定如何在一个类中声明它并能够在下一个类中正确访问它,以便按预期执行功能。
public class DisplayBoard {
public void printBoard(){
for(int i=1; i<board.length; i++){
for(int j=0; j<board[i].length-1; j++){
if(board[i][j] != '\0'){
System.out.print("| " + board[i][j] + " ");
}
else{
System.out.print("| ");
}
}
System.out.println("|");
}
System.out.println(" 1 2 3 4 5 6 7");
}
}
我的问题是如何在一个类中编写/重写此数组的声明,以便可以在两个类中访问它?
其他类的部分代码如下
public class Board {
public void placeCounter(char player, int move){
boolean placed = false;
for(int i=board.length-1; i>=0; i--) {
if(!placed) {
if(board[i][move -1 ] == '\0') {
board[i][move -1] = player;
placed = true;
}
}
}
}
}
【问题讨论】:
-
如果两个类都需要相同的数组,它们真的应该是不同的类吗?
-
"在 OOP 的良好实践中,我试图将我的一些方法分成两个类" - 谁说这是好的实践?
-
您可以实现
toString()方法,或public char getBoardField(x,y),或public char[][] getBoard(),可能会返回一个副本以防止对私有板的修改,或者... -
鉴于更新,我仍然不确定为什么您需要一个单独的类来打印板。直接在
Board中使用该方法有什么问题? -
它是为了将来在重构GUI等时使用。方法的分离允许将游戏方法组合在一起,但与实际的游戏框架分开。