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
构造函数中,它将在构造函数完成时停止存在,您只能访问