0

我是 OOP 的新手,在掌握该语言的 OOP 方面有很大的困难。我来自“C”编程相当扎实的背景,其任务的逻辑和执行似乎非常合理和直观。对于 OOP,像我这样的菜鸟很难看到类的优势并加以利用。简而言之,我希望编写一个程序:一个非常简单的程序来说明两个类之间的相互作用:一个“母”类调用一个类,该类通过实例化“getInput”类的对象来允许用户输入,以及然后调用“母亲”类中的对象以打印出该输入。下面是我试图用来实现这一目标的伪代码,但失败了:

public class mother {
    public static void main(String[] args){

        GetUserInput userInput = new GetUserInput();  //Here I create an object in GetUser input class that I want to reference in the mother class to get output
        System.out.println(input);

    }                       
} 


import java.util.Scanner;

public class GetUserInput {
     public String input;

     Scanner userInput = new Scanner(System.in);
     input = userInput.next();

}

我只是不明白为什么这种代码类型会失败?我在母类中实例化了一个对象。然后我实例化了一个允许用户输入的扫描器类的对象。我不明白为什么这段代码不起作用。

4

2 回答 2

3

首先,您不能像那样input = userInput.next()在类主体中使用诸如浮动之类的语句。

其次,你创建了一个新GetUserInput类,然后从不对其进行任何操作。

OOP 的想法是你的类在你的领域中建模概念。如果不更好地了解您在这里要做什么,就很难给出具体的建议。但是,下面给出了一个简短的示例:

public class Mother {
  public static void main(String[] args) {
    GetInput inputReader = new GetInput();
    String input = inputReader.read();
    System.out.println(input);
  }

public class GetInput {
  public String read() {
    Scanner scanner = new Scanner(System.in);
    return scanner.next();
  }
}
于 2013-10-14T01:30:00.503 回答
1

将 OOP 类视为结构(字段)与对其进行操作的函数(方法)的组合。(这实际上就是类在 C++ 中的工作方式。)在类主体中编写的行(如变量声明)本质上是一个结构初始化器,与类的构造函数相结合;这些行实际上被编译器复制到构造函数方法中。

将各种随机代码放在初始化程序中是没有意义的,而在 Java 中,您可以放在类主体本身中的唯一代码是变量声明和初始化。

在这种特定情况下,您的GetUserInput课程没有多大意义;作为一个结构,它只有一个字符串组件,并且你没有任何有趣的函数与之相伴。只需使用String。如果您确实有有趣的处理要做,请声明您在结构(int quantity, price;或其他)中拥有的字段,并编写一个将 aScanner作为输入并将这些值设置为有用的构造函数。

(作为注释,类通常像名词,它们上的方法通常像动词,命名约定反映了这一点。UserInput会更清楚。)

根据您所说的,这是主类的一些伪代码:

public class Main {
    public static void main(String[] args) {
        Scanner inputScanner = new Scanner(System.in);
        UserInput input = new UserInput(inputScanner);
        System.out.println(input.getInput());
    }
}
于 2013-10-14T01:37:15.257 回答