Java 如何从对象中调用变量?
我不太清楚这个问题该怎么说,就这样吧。在一节课上,我有:Java 如何从对象中调用变量?,java,class,object,methods,call,Java,Class,Object,Methods,Call,我不太清楚这个问题该怎么说,就这样吧。在一节课上,我有: public class Board { //instance variables private char BLANK = '_'; private char[][] board; public Board(){ int SIZE = 9; char[][] board = new char [3][3]; for (int i=0; i<board.length; i++){ for
public class Board {
//instance variables
private char BLANK = '_';
private char[][] board;
public Board(){
int SIZE = 9;
char[][] board = new char [3][3];
for (int i=0; i<board.length; i++){
for (int j=0; j<board[i].length; j++){
board[i][j] = BLANK;
}
}
}
}
它找不到Board.SIZE;它说它找不到变量。缺少什么,或者如何确保它可以找到Board.SIZE?谢谢 由于您在构造函数中声明并初始化了
SIZE
,因此它是唯一可见的位置。您需要将其声明为类变量。要以显示的方式访问它(Board.SIZE
),需要将其设置为公共变量。如果希望它像其他方法一样是私有的,则需要创建一个getter方法,如getSize()
,然后返回该私有变量。另外,看起来您正试图直接从类本身而不是从该类的对象获取变量。在这种情况下,您还需要变量是静态的
公开版本
public class Board {
public static int SIZE = 9
public Board() {
// remove "int SIZE = 9" from your constructor
}
}
私人版本
public class Board {
private static int SIZE = 9
public Board() {
// remove "int SIZE = 9" from your constructor
}
public int getSize() { return SIZE; }
}
旁注:
您已经在这里的类级别声明了一个变量private char[][]board代码>然后在你的构造函数中,你在这里再次执行它char[][]board=new char[3][3]代码>。这将是两个不同的变量,这几乎肯定不是你想要的。为了避免造成这种混乱,您只需在构造函数中初始化电路板
,而不需要重新声明它。在构造函数中进行更改
char[][] board = new char [3][3];
公正
board = new char [3][3];
由于您在构造函数中声明并初始化了SIZE
,这是它唯一可见的地方。您需要将其声明为类变量。要以显示的方式访问它(Board.SIZE
),需要将其设置为公共变量。如果希望它像其他方法一样是私有的,则需要创建一个getter方法,如getSize()
,然后返回该私有变量。另外,看起来您正试图直接从类本身而不是从该类的对象获取变量。在这种情况下,您还需要变量是静态的
公开版本
public class Board {
public static int SIZE = 9
public Board() {
// remove "int SIZE = 9" from your constructor
}
}
私人版本
public class Board {
private static int SIZE = 9
public Board() {
// remove "int SIZE = 9" from your constructor
}
public int getSize() { return SIZE; }
}
旁注:
您已经在这里的类级别声明了一个变量private char[][]board代码>然后在你的构造函数中,你在这里再次执行它char[][]board=new char[3][3]代码>。这将是两个不同的变量,这几乎肯定不是你想要的。为了避免造成这种混乱,您只需在构造函数中初始化电路板
,而不需要重新声明它。在构造函数中进行更改
char[][] board = new char [3][3];
公正
board = new char [3][3];
由于您在构造函数中声明并初始化了SIZE
,这是它唯一可见的地方。您需要将其声明为类变量。要以显示的方式访问它(Board.SIZE
),需要将其设置为公共变量。如果希望它像其他方法一样是私有的,则需要创建一个getter方法,如getSize()
,然后返回该私有变量。另外,看起来您正试图直接从类本身而不是从该类的对象获取变量。在这种情况下,您还需要变量是静态的
公开版本
public class Board {
public static int SIZE = 9
public Board() {
// remove "int SIZE = 9" from your constructor
}
}
私人版本
public class Board {
private static int SIZE = 9
public Board() {
// remove "int SIZE = 9" from your constructor
}
public int getSize() { return SIZE; }
}
旁注:
您已经在这里的类级别声明了一个变量private char[][]board代码>然后在你的构造函数中,你在这里再次执行它char[][]board=new char[3][3]代码>。这将是两个不同的变量,这几乎肯定不是你想要的。为了避免造成这种混乱,您只需在构造函数中初始化电路板
,而不需要重新声明它。在构造函数中进行更改
char[][] board = new char [3][3];
公正
board = new char [3][3];
由于您在构造函数中声明并初始化了SIZE
,这是它唯一可见的地方。您需要将其声明为类变量。要以显示的方式访问它(Board.SIZE
),需要将其设置为公共变量。如果希望它像其他方法一样是私有的,则需要创建一个getter方法,如getSize()
,然后返回该私有变量。另外,看起来您正试图直接从类本身而不是从该类的对象获取变量。在这种情况下,您还需要变量是静态的
公开版本
public class Board {
public static int SIZE = 9
public Board() {
// remove "int SIZE = 9" from your constructor
}
}
私人版本
public class Board {
private static int SIZE = 9
public Board() {
// remove "int SIZE = 9" from your constructor
}
public int getSize() { return SIZE; }
}
旁注:
您已经在这里的类级别声明了一个变量private char[][]board代码>然后在你的构造函数中,你在这里再次执行它char[][]board=new char[3][3]代码>。这将是两个不同的变量,这几乎肯定不是你想要的。为了避免造成这种混乱,您只需在构造函数中初始化电路板
,而不需要重新声明它。在构造函数中进行更改
char[][] board = new char [3][3];
公正
board = new char [3][3];
SIZE
变量将仅存在于Board
构造函数中,当构造函数完成时它将不再存在,并且您只能在声明后从构造函数行访问它
因此,您需要将SIZE声明为类的属性,而不是局部变量。变量SIZE
将只存在于板构造函数中,当构造函数完成时它将不再存在,并且您只能在声明后从构造函数行访问它
因此,您需要将SIZE声明为类的属性,而不是局部变量。变量SIZE
将只存在于板构造函数中,当构造函数完成时它将不再存在,并且您只能在声明后从构造函数行访问它
因此,您需要将大小声明为类的一个属性,而不是局部变量。SIZE
变量将只存在于Board
构造函数中,它将在构造函数完成时停止存在,您只能访问