Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在另一个类构造函数中调用类?JAVA_Java_Constructor_Encapsulation - Fatal编程技术网

在另一个类构造函数中调用类?JAVA

在另一个类构造函数中调用类?JAVA,java,constructor,encapsulation,Java,Constructor,Encapsulation,我不明白其他人为此做了什么。出于某种原因,似乎缺乏这方面的教育。但我认为对于java来说,它的唯一目的是使用多个类,这一点非常重要。我的问题是,如何以封装类板实例的方式构建“播放器类构造函数” public class Driver { public static void main(String[] args) { //new tic-tac-toe board Board board = new Board(); //two

我不明白其他人为此做了什么。出于某种原因,似乎缺乏这方面的教育。但我认为对于java来说,它的唯一目的是使用多个类,这一点非常重要。我的问题是,如何以封装类板实例的方式构建“播放器类构造函数”

public class Driver
{
    public static void main(String[] args)
    {
        //new tic-tac-toe board
        Board board = new Board();

        //two new players (conputer and human)
        Player computer = new Player(board, "X");   //Give computer player access to board and assign as X.
        Player human = new Player(board, "O");  
    }    
}
这就是我所拥有的,我做得对吗

public class Player

{
    char player = 'X';
    char cpu = 'O';
    public static Scanner scan = new Scanner(System.in);

//constructor with board class inside?
    public Player(Board board , String inBoard )
    {

    }

}

您需要在
播放器
类中添加一个字段,例如
。然后,在构造函数中,执行以下操作:

this.board = board;

不,你想错了<代码>播放器可以在没有
的情况下存在和运行。当然,没有
棋盘
他不能玩,但他可以做其他事情,比如找一块
棋盘
玩。同时,
棋盘
是无生命的物体,其唯一目的是为
玩家
提供一个玩耍的地方<代码>棋盘并不关心哪个
玩家
在上面玩


所以,创建构造函数时的一般规则是将对象作为参数传递,而不是相反。例如,您应该将
汽车
传递到
驾驶员
构造器中,但不应该将
驾驶员
传递到
汽车
构造器中,因为汽车不需要任何特定的
驾驶员
来充当汽车。同时,驾驶员需要一辆汽车来充当驾驶员。

课程不“调用”。你是说“创建类”实例吗?另外,请澄清您所说的内置board类的
构造函数是什么意思。目前,您的要求还很不清楚。在OOP、构造函数和字段变量方面缺乏教育?这是一个建议的标记,如果它把您甩了,很抱歉。@owacorder它在评论中。我喜欢这个解释,谢谢。