gpt4 book ai didi

java - getter/setter 必须在 Java 的 main 方法中吗?

转载 作者:行者123 更新时间:2023-12-01 16:50:05 24 4
gpt4 key购买 nike

最近,我在计算机科学类(class)中接到一项作业,要创建一个类,其中包含从该类构建的两个对象。

教授通过电子邮件的批评如下:“构造函数、getter 和 setter 中的 sysouts 应该位于 main 方法中。”

他的英语说得不太好,所以这没什么帮助。有人知道他在引用我的代码时到底在说什么吗?这是我提交的代码:

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

}

是否必须将 getter/setter 放在 main 方法中?如果我这样做,代码实际上不会运行。

最佳答案

他指的是你的类的可重用性。他希望您公开 getter,以便您能够将打印语句放入 main 方法中。

为什么?

如果其他人想使用您的类,或者您想将其重用于不同的项目,则内容不应打印到控制台。并非在所有可能使用 Book 的情况下都应该将内容打印到控制台。

因此,最好将日志记录保留在主方法中,以便 Book 可以重用于其他任务。

Getters允许您访问这些值,同时仍保持字段私有(private),确保修改它们的唯一方法是通过您公开的行为:turnForwardturnBack等..

改进您的代码

当您翻页时,当前页面应该发生变化。保持不变是没有意义的。

您的行为方法应该改变 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.");
}

关于java - getter/setter 必须在 Java 的 main 方法中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42236699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com