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

时间:2015-12-22 17:02:04

标签: java class object parameters interface

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();
}

所以我是Java的新手,甚至不确定这是否可以开始。上面的代码都在一个类中。 Human正在实施接口Player。我想使用方法CodeMaker中的类Human创建一个对象setupPlayers,然后在方法exampleUse中使用此对象。有没有办法做到这一点?如果没有人能想到任何替代品吗?干杯。

5 个答案:

答案 0 :(得分:3)

我认为你必须指Player是界面。请记住,如果要比较字符串,则应使用equals方法而不是==运算符。

public class ClassName{
    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 (input.equals("Human")) {
            codeMaker = new Human();
        }
        else {
            codeMaker = new CPU();  
        }
    }

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

答案 1 :(得分:2)

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

Player CodeMaker = null;

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

}

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

答案 2 :(得分:1)

创建一个类字段变量(私有,用于良好的封装)并使用"string".equals(object)检查字符串相等性(How do I compare strings in Java?)。

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
}

也许你应该将input = mySc.next()包装在这样的try / catch中,因为输入read会抛出异常。

[...]

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

[...]

答案 3 :(得分:0)

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

不要Player CodeMaker = new Human(); - 这会导致错误,因为您无法创建界面对象。

答案 4 :(得分:0)

请考虑学习创新设计模式。 Java的文化专注于组织和良好的架构。你会对设计模式给你的世界感到惊讶。