我是编程(和Java)的初学者,可以使用一些基本概念的帮助。 这是我阅读有关构造函数,set和get语句的示例。
1 // Fig. 3.10: GradeBook.java
2 // GradeBook class with a constructor to initialize the course name.
3
4 public class GradeBook
5 {
6 private String courseName; // course name for this GradeBook
7
8 // constructor initializes courseName with String supplied as argument
9 public GradeBook( String name )
10 {
11 courseName = name; // initializes courseName
12 }
13
14 // method to set the course name
15 public void setCourseName( String name )
16 {
17 courseName = name; // store the course name
18 } // end method setCourseName
19
20 // method to retrieve the course name
21 public String getCourseName()
22 {
23 return courseName;
24 } // end method getCourseName
25
26 // display a welcome message to the GradeBook user
27 public void displayMessage()
28 {
29 // this statement calls getCourseName to get the
30 // name of the course this GradeBook represents
31 System.out.printf( "Welcome to the grade book for\n%s!\n",
32 getCourseName() );
33 } // end method displayMessage
34
35 } // end class GradeBook
我很难理解集合和获取之间的步骤。我的书没有真正解释任何内容,但他们如何提示用户输入数据?默认情况下是否输入其中一个的提示?我所理解的是方法setCourseName(String name)意味着课程名称必须是一个字符串。但我不明白courseName = name的实例变量。或者getCourseName方法的功能。你能帮助我理解这个例子吗?
答案 0 :(得分:1)
该示例中没有用户输入。它只在displayMessage()方法中写入一些输出。您可以像这样使用该类,例如:
public class GradeBookMain {
public static void main(String[] args) {
GradeBook gradeBook = new GradeBook("my course");
gradeBook.displayMessage();
gradeBook.setCourseName("some other course");
gradeBook.displayMessage();
}
}
任何提示输入都必须由您完成。这个类只为你提供了一种保存一些数据的方法:具体来说就是一个课程名称。构造函数要求您提供一个名称,该名称存储在private String courseName;
字段中。 getter(getCourseName())和setter(setCourseName())分别返回和修改该字段的内容。 displayMessage()方法只是向控制台打印一条消息,显示该字段的当前内容。
答案 1 :(得分:1)
GradeBook
是一个类,特定的成绩簿将是一个实例。由于每个实例都需要自己的名称(每个人都有自己的名字),courseName
是访问该名称的变量。因此setCourseName( String name )
将courseName
设置为name
参数的值。
getCourseName()
方法为任何调用它的人提供名称。由于courseName
是私有的,因此您无法直接访问它 - 并且它是私有的以便维护封装(您将了解这一点)。
获取输入与该类无关。您基本上调用操作系统(使用其他类)并将读取字符串传递给您想要的任何内容,例如setCourceName(...)
实例的GradeBook
方法。
编辑:我会试着举个例子。
想象一下,你有一张纸有3个盒子和3个文本。方框表示成绩簿,而文本是3个课程名称的名称。
由于您不知道哪个书属于哪个课程(方框是空的),您必须通过从文本中绘制一条线到相应的框来分配它们。这就是setCourseName(...)
会做的事情。
现在你想知道哪个书/盒属于哪个课程。您可以按照从框到文本的行来获取课程名称。这就是getCourseName(...)
会做的事情。
该示例中的行将是实例变量courseName
。
希望有所帮助:)
答案 2 :(得分:1)
GradeBook类不封装任何用户输入功能。想象一下,您可能希望在几个不同的应用程序中使用此类 - 可能是Web应用程序(其中课程名称以HTML格式输入),Applet(嵌入在网页中的Java应用程序),或者,如您所见一个基于控制台的java应用程序。他们都会以不同的方式从用户那里获得输入。假设基于控制台的应用程序,主应用程序代码的片段可能如下所示:
System.out.print("Enter the course name: ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String courseName = br.readLine();
GradeBook gb = new GradeBook(courseName);
gb.displayMessage();
请注意,由于GradeBook类的唯一构造函数需要一个courseName,因此通常使用setCourseName / getCourseName来修改现有GradeBook对象上的courseName,例如:从数据存储加载。
答案 3 :(得分:1)
将Gradebook视为一个对象,就像物理成绩册一样。像大多数物体一样,它本身不执行任何动作:其他力量作用于它。
成绩簿无法提示用户输入或显示输出。那些事情发生在外部势力作用于它的时候。
在这种情况下,程序可以将数据插入成绩簿,如下所示:
gradebook->setCourseName( "History" );
当您的程序运行此语句时,课程名称(“历史记录”)将保存在成绩簿中,名为“courseName”的属性中。
同样,我们可以根据成绩册来检索信息。
gradebook->getCourseName();
当您的程序执行此语句时,成绩簿将返回我们之前为courseName
设置的值(“历史记录”)。
某些对象可以执行复杂的操作,但此对象很简单。因此,用户输入不由对象本身处理。
答案 4 :(得分:0)
这些只是类的成员变量的getter和setter,这意味着它们定义了获取和设置变量值的方法。在调用这些方法之前,您实际上不会获取或设置任何内容。在构造函数中,有一个为courseName的参数,这意味着当您调用Gradebook(“Math”)时,courseName变量将设置为“Math”。
答案 5 :(得分:0)
courseName是私有的,所以没有人可以更改它。 getter和setter方法用于允许和控制对此私有属性的访问。
courseName = name 将setter方法得到的var分配给内部私有。
答案 6 :(得分:0)
你也可以试试这个:
public static void main(String[] args) {
// This will initialize your class with value "java course" as your course
// name whenever the constructor is called. It acts like the default value
GradeBook GBobject1 = new GradeBook("java course");
// System.in accepts the values from keyboard
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.println("Enter CourseName..!");
// next() method returns a String.
// For other types, use nextInt(), nextDouble(), etc...
String course= input.next();
// Pass the course name as a parameter to your setCourseName(String)
// method in order to set the course name as you like.
// This line sets the course name that you entered.
GBobject1.setCourseName(course);
// In order to display the name you have to call
// displayMessage() which in-turn calls setCourseName()
// This will display the course name!
GBobject1.displayMessage();
}
在GradeBook课程中编写此主要方法,或者您可以在其他课程中编写。