【发布时间】:2019-01-06 15:04:00
【问题描述】:
我是学习 Java 的新手,并试图了解 OOP,但我似乎找不到任何有相同问题的人。我的问题是,是否可以在构造函数中使用方法,例如此处的示例:
package ezrab.nl;
public class Calculations {
private int number;
private int multiplier;
private String operator = "";
public Calculations(int number, String operator, int multiplier) {
this.number = number;
this.operator = operator;
this.multiplier = multiplier;
switch (getOperator()) {
case "+":
System.out.println(getNumber() + getMultiplier());
break;
case "-":
System.out.println(getNumber() - getMultiplier());
break;
case "*":
System.out.println(getNumber() * getMultiplier());
break;
case "/":
System.out.println(getNumber() / getMultiplier());
break;
case "%":
System.out.println(getNumber() % getMultiplier());
break;
default:
System.out.println("Something went wrong.");
}
}
public int getNumber() {
return this.number;
}
public void setNumber(int number) {
this.number = number;
}
public int getMultiplier() {
return this.multiplier;
}
public void setMultiplier(int multiplier) {
this.multiplier = multiplier;
}
public String getOperator() {
return this.operator;
}
public void setOperator(String operator) {
this.operator = operator;
}
}
所以我想知道,是否允许使用我在构造函数中创建的方法。
编辑:我想指出该程序正在运行。我只想知道我是否正确地遵循了 OOP 的规则。
【问题讨论】:
-
你有什么错误吗?
-
不,不是真的,除非你必须这样做。这里有一件事,构造函数中使用的方法必须不是多态的,使这些
final -
我看不出你所做的有什么问题,你的代码至少应该编译和运行。更典型的是,在生产环境中,您可能会看到一些正在记录语句的东西,而不是调用
System.out。 -
@Eugene 我认为他实际上不需要调用这些方法,因为它们只是 getter,并且这些值已经作为构造函数的参数可用。因此,唯一的问题是
println是否是最终/静态的。 -
恕我直言,我建议您创建一个单独的方法
print。因为构造函数必须只创建和初始化对象。而不是打印或做某事。为每个动作创建一个方法。
标签: java oop methods constructor