getters/setters 必须在 Java 的 main 方法中吗?
Must getters/setters be in main method in Java?
最近,我在一门计算机科学课程中接到了一项作业,要创建一个 class,其中包含两个根据所述 class 构建的对象。
教授通过邮件提出的批评如下:"sysouts in constructor, getters, and setters these should be in the main method."
他的英语说得不太好,所以帮不上什么忙。有人知道他在参考我的代码时到底在说什么吗?这是我提交的代码:
public class Book {
int currentPage;
int nextPage;
int lastPage;
public Book(int pageNumber) {
currentPage = pageNumber;
System.out.println("You've opened the book to page " + currentPage + ".");
}
public void turnForward(int numTurned) {
nextPage = numTurned + currentPage;
System.out.println("You've turned forward to page " + nextPage + ".");
}
public void turnBack(int numTurned) {
lastPage = nextPage - numTurned;
if (lastPage <= 1) {
lastPage = 1;
System.out.println("You've turned back to the first page.");
}else {
System.out.println("You've turned back to page " + lastPage + ".");
}
}
public static void main(String[] args) {
Book bigJava = new Book(5);
bigJava.turnForward(2);
bigJava.turnBack(8);
Book earlyObjects = new Book(22);
earlyObjects.turnForward(12);
earlyObjects.turnBack(17);
}
}
是否必须在main方法中放入getters/setters?如果我这样做,代码实际上并不 运行。
他指的是您 class 的可重用性。他希望您公开 getter,这样您就可以将打印语句放在 main 方法中。
为什么?
如果其他人想使用您的 class,或者您可能想将它重新用于其他项目,则不应将内容打印到控制台。并非所有可能使用 Book
的情况都应该将内容打印到控制台。
因此最好将日志记录保留在 main 方法中,这样 Book
可以重复用于其他任务。
Getters 允许您访问值,同时仍然保留您的字段 private
,确保可以修改它们的唯一方法是通过您公开的行为:turnForward
、turnBack
, 等等..
改进您的代码
当您翻页时,当前页应该改变。保持不变是没有意义的。
您的行为方法应该改变 currentPage
变量:
public void turnForward(int pages) {
currentPage += numOfPages;
}
public void turnBack(int numOfPages) {
currentPage -= numOfPages;
}
public int getCurrentPage() {
return currentPage;
}
然后您的主要方法可以翻页,并在每次翻页时进行记录:
public static void main(String[] args) {
Book book = new Book(25);
int startPage = book.getCurrentPage();
book.turnForward(5);
int endPage = book.getCurrentPage();
System.out.println("The book was turned " + endPage - startPage + " pages forward.");
}
最近,我在一门计算机科学课程中接到了一项作业,要创建一个 class,其中包含两个根据所述 class 构建的对象。
教授通过邮件提出的批评如下:"sysouts in constructor, getters, and setters these should be in the main method."
他的英语说得不太好,所以帮不上什么忙。有人知道他在参考我的代码时到底在说什么吗?这是我提交的代码:
public class Book {
int currentPage;
int nextPage;
int lastPage;
public Book(int pageNumber) {
currentPage = pageNumber;
System.out.println("You've opened the book to page " + currentPage + ".");
}
public void turnForward(int numTurned) {
nextPage = numTurned + currentPage;
System.out.println("You've turned forward to page " + nextPage + ".");
}
public void turnBack(int numTurned) {
lastPage = nextPage - numTurned;
if (lastPage <= 1) {
lastPage = 1;
System.out.println("You've turned back to the first page.");
}else {
System.out.println("You've turned back to page " + lastPage + ".");
}
}
public static void main(String[] args) {
Book bigJava = new Book(5);
bigJava.turnForward(2);
bigJava.turnBack(8);
Book earlyObjects = new Book(22);
earlyObjects.turnForward(12);
earlyObjects.turnBack(17);
}
}
是否必须在main方法中放入getters/setters?如果我这样做,代码实际上并不 运行。
他指的是您 class 的可重用性。他希望您公开 getter,这样您就可以将打印语句放在 main 方法中。
为什么?
如果其他人想使用您的 class,或者您可能想将它重新用于其他项目,则不应将内容打印到控制台。并非所有可能使用 Book
的情况都应该将内容打印到控制台。
因此最好将日志记录保留在 main 方法中,这样 Book
可以重复用于其他任务。
Getters 允许您访问值,同时仍然保留您的字段 private
,确保可以修改它们的唯一方法是通过您公开的行为:turnForward
、turnBack
, 等等..
改进您的代码
当您翻页时,当前页应该改变。保持不变是没有意义的。
您的行为方法应该改变 currentPage
变量:
public void turnForward(int pages) {
currentPage += numOfPages;
}
public void turnBack(int numOfPages) {
currentPage -= numOfPages;
}
public int getCurrentPage() {
return currentPage;
}
然后您的主要方法可以翻页,并在每次翻页时进行记录:
public static void main(String[] args) {
Book book = new Book(25);
int startPage = book.getCurrentPage();
book.turnForward(5);
int endPage = book.getCurrentPage();
System.out.println("The book was turned " + endPage - startPage + " pages forward.");
}