Java 对实例和声明的误解
我是Java的完全新手,正在创建游戏Snake。在游戏中,我创建了一个Board类,这个类所做的是创建一个JFrame,用于提供视觉表示(据我所知)。我的问题在于我对代码缺乏理解。我不确定“公共静态板”的作用。我原以为它创建了Board类的静态实例,但我认为这是不对的 我还在为“board=new board();”一行而挣扎,据我所知,这会在board类中创建一个构造实例,但是,我不确定为什么要将其指定给“board”Java 对实例和声明的误解,java,variables,object,instance,main,Java,Variables,Object,Instance,Main,我是Java的完全新手,正在创建游戏Snake。在游戏中,我创建了一个Board类,这个类所做的是创建一个JFrame,用于提供视觉表示(据我所知)。我的问题在于我对代码缺乏理解。我不确定“公共静态板”的作用。我原以为它创建了Board类的静态实例,但我认为这是不对的 我还在为“board=new board();”一行而挣扎,据我所知,这会在board类中创建一个构造实例,但是,我不确定为什么要将其指定给“board” 编辑:鉴于此,我认为publicjframe是否正在创建名为frame的J
编辑:鉴于此,我认为
publicjframe代码>是否正在创建名为frame的JFrame的新实例?如果没有,那么它是否创建了一个我可以操作的变量?行公共静态板代码>声明一个可以引用电路板的变量。在某种程度上,把它想象成一个盒子——你创造了一个空盒子。它里面什么都没有,但是你现在可以把东西放进盒子里了
声明的每一部分都告诉您有关盒子的一些信息:
- 公共:任何人都可以访问此框
- 静态:长方体与游戏类关联,而不是与特定实例关联。就目前而言,这意味着永远只有一个盒子,而不是多个
- 板子:盒子的“类型”是
Board
——只有Board
类型适合盒子的东西
- 板:框的名称为“
board
”。当您要参考此框的内容时,请使用名称board
你认为board=newboard()是对的代码>创建板的一个实例
。具体来说,新板()代码>部分是生成新板
实例的部分。通过说board=newboard()
,您正在将新实例放在前面声明的标有board
的框中。从这里开始,您可以将您创建的棋盘命名为board
,或在该类之外命名为Game.board
。同样重要的是要知道,通过说board=new board()
,以前的board
内容(如果有的话)现在会丢失。你把盒子倒出来,这样你就可以在里面放一个新的东西了。显然,这里没有任何内容,但在使用任何面向对象语言(如java)时,都要记住这一点代码>声明一个可以引用电路板的变量。在某种程度上,把它想象成一个盒子——你创造了一个空盒子。它里面什么都没有,但是你现在可以把东西放进盒子里了
声明的每一部分都告诉您有关盒子的一些信息:
- 公共:任何人都可以访问此框
- 静态:长方体与游戏类关联,而不是与特定实例关联。就目前而言,这意味着永远只有一个盒子,而不是多个
- 板子:盒子的“类型”是
Board
——只有Board
类型适合盒子的东西
- 板:框的名称为“
board
”。当您要参考此框的内容时,请使用名称board
你认为board=newboard()是对的代码>创建板的一个实例
。具体来说,新板()代码>部分是生成新板
实例的部分。通过说board=newboard()
,您正在将新实例放在前面声明的标有board
的框中。从这里开始,您可以将您创建的棋盘命名为board
,或在该类之外命名为Game.board
。同样重要的是要知道,通过说board=new board()
,以前的board
内容(如果有的话)现在会丢失。你把盒子倒出来,这样你就可以在里面放一个新的东西了。很明显,这里什么都没有,但在使用任何面向对象语言(如java)时,都要记住这一点
public static Board board;
这意味着在Java程序中有一个名为board的类级(静态)引用。它可以容纳一个板实例。
但是,除非您将实例指定给该引用,否则它不会指向任何内容。它只是内存中的一个引用
当代码
board = new Board();
被处决。JVM创建Board类的实例,然后将创建的实例分配给前面提到的Board引用。
最后,board引用现在指向一个board类实例。
由于它是静态的和公共的,您可以使用类名从任何地方访问它。
e、 g
当你把
public static Board board;
这意味着在Java程序中有一个名为board的类级(静态)引用。它可以容纳一个板实例。
但是,除非您将实例指定给该引用,否则它不会指向任何内容。它只是内存中的一个引用
当代码
board = new Board();
被处决。JVM创建Board类的实例,然后将创建的实例分配给前面提到的Board引用。
最后,board引用现在指向一个board类实例。
由于它是静态的和公共的,您可以使用类名从任何地方访问它。
e、 g
第一个问题:
public static Board board;
到目前为止,您已经声明了具有公共可见性的Board类型的引用变量。它可以通过Game.Board在任何地方访问。static修饰符意味着它附加到类(类似于不需要类实例来运行的静态方法,即static void main(String[]args)
)。没有为带有=”的引用分配任何内容,它只是内存中对引用的分配。它没有指向任何东西。但它将在主执行后执行
board = new Board();
Human bob = new Human(); //default constructor (bob.name() == "name")
Human alice = new Human("alice"); //different constructor (alice.name() == "alice")