我正在试图弄清楚构造函数在以下程序中的工作原理。基本上有一个扩展Seeker
类的Player
类和一个包含Game
对象的Seeker
类,如下面的代码所示。
我的问题是,当Game
类使用mySeeker
实例mySeeker = new Seeker( "Sally", this );
时,this
会调用播放器的构造函数吗?如果是这样,它在哪里传递了游戏的名称?我在Game g
的构造函数中看到了Player
,但我无法弄清楚游戏myGame
(在main
方法中)是如何传递给Seeker
的1}}。
//游戏类
class Game {
Seeker mySeeker;
int gridSize;
Game( int gs ) {
gridSize = gs;
mySeeker = new Seeker( "Sally", this ); //what does 'this' do here? why it does not include the name of the game?
}
void play() {
mySeeker.seek();
}
}
// Player class
abstract class Player {
private Point location;
private String name;
Game game;
Player( Point p, String n, Game g ) {
location = p;
name = n;
game = g;
}
//搜寻者类
class Seeker extends Player {
Seeker( String n, Game g ) {
super( new Point( 0, 0 ), n, g ); // seeker starts at 0,0
}
//主程序
public static void main(String[] args) {
int gridSize = 3; // default value
Game myGame = new Game( gridSize );
myGame.play();
}
答案 0 :(得分:0)
" this"引用是指Game类的实例。游戏类适用于搜索者/玩家类,因此搜索者/玩家类可以访问游戏类中的数据。
编辑: "寻求"正在递交"这个" " Game"的实例并使用" super"命令将数据传递给它继承的"播放器"
答案 1 :(得分:0)
我的问题是,当
Game
类实例化mySeeker using
mySeeker =新搜索者时(" Sally",这个);does ``this
调用播放器&#39}构造函数?
没有
Player
构造函数>>是<<被调用,但不是因为this
。在语句来自的上下文中,this
将表示Game
实例。它只是一个参数"正在传递给Seeker
构造函数。
Player constructor is being invoked in the
Seeker`构造函数;特别是这一行:
super( new Point( 0, 0 ), n, g );
当您new
Seeker
时,会调用Seeker
构造函数,并通过Player
立即调用super
构造函数。调用
如果是这样,它在哪里传递了游戏名称?
上面的行是将Game
对象传递给Player
的位置。请参阅g
参数?它与Game
传递的this
对象相同。
(您向我们展示的代码并不支持#34;名称"用于游戏。传递的内容是参考。当您将新的Game
实例分配给myGame
,它不是游戏的名称"。myGame
变量只是......变量......可以包含对<的引用em>一些 Game
对象。)
答案 2 :(得分:0)
Seeker
使用名称和Game
对象进行实例化。传递this
只是对当前对象的引用。将使用已创建的Seeker
对象创建Game
,这意味着Seeker
可以访问Game
对象中的数据。
答案 3 :(得分:0)
mySeeker = new Seeker( "Sally", this )
上面的代码分配一个Seeker对象,然后执行它的构造函数来启动它的值,然后为变量 mySeeker 分配一个关于新Seeker对象的引用。
使用两个参数调用构造函数:字符串和 this 。 this 指的是执行上述代码的当前对象,在这种情况下,它引用正在构造的Game对象。