Java:如何在方法中创建对象并在整个类中使用它?

Java:如何在方法中创建对象并在整个类中使用它?,java,class,object,parameters,interface,Java,Class,Object,Parameters,Interface,所以我对Java还不熟悉,甚至不确定这是否可以从一开始。以上代码都在一个类中Human正在实现界面Player。我想使用方法setupPlayers中的类Human创建一个对象CodeMaker,然后在方法示例use中使用此对象。有办法做到这一点吗?如果没有的话,谁能想出其他的选择呢?干杯 您可以将播放器对象存储为实例变量: public void setupPlayers() { System.out.println("Would you like the Code Maker to

所以我对Java还不熟悉,甚至不确定这是否可以从一开始。以上代码都在一个类中
Human
正在实现界面
Player
。我想使用方法
setupPlayers
中的类
Human
创建一个对象
CodeMaker
,然后在方法
示例use
中使用此对象。有办法做到这一点吗?如果没有的话,谁能想出其他的选择呢?干杯

您可以将
播放器
对象存储为实例变量:

public void setupPlayers() {
    System.out.println("Would you like the Code Maker to be Human or CPU? :");
    String input = mySc.next();
    if (input == "Human") {
        Player CodeMaker = new Human();
    }
    else {
        Player CodeMaker = new CPU();  
    }

public void exampleUse() {
    CodeMaker.getCode();
}

您可以将
Player
对象存储为实例变量:

public void setupPlayers() {
    System.out.println("Would you like the Code Maker to be Human or CPU? :");
    String input = mySc.next();
    if (input == "Human") {
        Player CodeMaker = new Human();
    }
    else {
        Player CodeMaker = new CPU();  
    }

public void exampleUse() {
    CodeMaker.getCode();
}

只需创建类的一个成员:
private Human CodeMaker并在构造函数中初始化它
CodeMaker=newplayer()


不要做
Player CodeMaker=新人类()-这会给您一个错误,因为您无法创建接口对象。

只需创建类的成员:
私有人工代码生成器并在构造函数中初始化它
CodeMaker=newplayer()


不要做
Player CodeMaker=新人类()-这会给您一个错误,因为您无法创建接口的对象。

创建一个类字段变量(私有,用于良好的封装)并使用
“string”.equals(object)
检查字符串相等性()

也许您应该将input=mySc.next()包装成这样的try/catch,因为input read可能引发异常

private Player codeMaker;

public void setupPlayers() {
    System.out.println("Would you like the Code Maker to be Human or CPU? :");
    String input = mySc.next();
    if ("Human".equals(input)) {
        codeMaker = new Human();
    }
    else {
        codeMaker = new CPU();  
    }
}

public void exampleUse() {
    codeMaker.getCode(); // you need to define a return or consumption HERE
}

创建一个类字段变量(private,用于良好的封装)并使用
“string”.equals(object)
检查字符串相等性()

也许您应该将input=mySc.next()包装成这样的try/catch,因为input read可能引发异常

private Player codeMaker;

public void setupPlayers() {
    System.out.println("Would you like the Code Maker to be Human or CPU? :");
    String input = mySc.next();
    if ("Human".equals(input)) {
        codeMaker = new Human();
    }
    else {
        codeMaker = new CPU();  
    }
}

public void exampleUse() {
    codeMaker.getCode(); // you need to define a return or consumption HERE
}

我想你一定是说
播放器
就是界面。请记住,如果要比较字符串,应使用
equals
方法,而不是
=
运算符

[...]

String input = null;
try {
  input = mySc.next();
}
catch(Exception ex) {
  throw ex;
}
if ("Human".equals(input) {
    codeMaker = new Human();
}

[...]

我想你一定是说
播放器
就是界面。请记住,如果要比较字符串,应使用
equals
方法,而不是
=
运算符

[...]

String input = null;
try {
  input = mySc.next();
}
catch(Exception ex) {
  throw ex;
}
if ("Human".equals(input) {
    codeMaker = new Human();
}

[...]

请考虑研究创造性的设计模式。Java文化注重组织和良好的体系结构。你肯定会对世界设计模式给你带来惊喜。请参阅“创意设计模式”。Java文化注重组织和良好的体系结构。您肯定会对设计模式所能提供的世界感到惊讶。

为什么要使用接口作为变量名?我没有收到通知point@fuzzy28-据我所知,
Player
is和class impementing interface
Human
。不管怎样,“一个对象播放器使用一个叫做CodeMaker的人的接口”这句话有点让人困惑。^Player是接口,Human是实现Player的类。我认为“Human”和“CPU”都会实现“Player”…我已经修改了我的问题,希望它现在更有意义…为什么要使用接口作为变量名?我没有收到通知point@fuzzy28-据我所知,
Player
is和class impementing interface
Human
。无论如何,“一个对象播放器使用一个叫做CodeMaker的人的接口”这句话有点让人困惑。^Player是接口,而Human是实现播放器的类。我认为“Human”和“CPU”都会实现“Player”。我已经修改了我的问题,希望它现在更有意义……非常感谢。在我在顶部添加了private-Player-codeMaker之后,它仍然不起作用,但是我将所有的==都改为equals,它工作得非常好。非常感谢。在我在顶部添加了private-Player-codeMaker之后,它仍然不起作用,但是我将所有的==都改为equals,它工作得非常好。