【发布时间】:2013-06-26 10:30:03
【问题描述】:
所以我在 main 中声明了一些变量并创建了一个新对象;将变量作为参数传递给构造函数。现在,当我在类中调用一个方法时,我会认为这些变量可以被该方法访问,而不必将它们作为参数传递给它。不是这样吗?
代码如下:
import java.util.Scanner;
public class Step2_lab11 {
public static void main(String[] args) {
final int TAO = 50;
final double DELTA_MINUTES = 0.1;
System.out.println("VINETS AVKYLNINGSTID \n");
System.out.println("Ange vinets temperatur:");
Scanner userIn = new Scanner(System.in);
double wineTemp = userIn.nextDouble();
System.out.println("Vinets önskade temperatur:");
double preferredTemp = userIn.nextDouble();
System.out.println("Kylens/frysens temperatur:");
double chillTemp = userIn.nextDouble();
WineChiller wineChiller = new WineChiller(wineTemp, preferredTemp, chillTemp);
}
}
这是 WineChiller.java 类:
public class WineChiller {
public WineChiller(double wineTemp, double preferredTemp, double chillTemp) {
getChillingTime();
}
public void getChillingTime() {
while(wineTemp>preferredTemp)
{
elapsedTime += DELTA_MINUTES;
double dT = (wineTemp - chillTemp) * DELTA_MINUTES / TAO;
wineTemp -= dT;
}
System.out.println(Math.round(elapsedTime));
}
}
为什么 getChillingTime 不能将 wineTemp 等解析为变量?
编辑添加:非常感谢指点家伙。但是还有一个额外的警告!这些说明似乎暗示 WineChiller 类应该只包含构造函数和方法 getChillingTime,并且 getChillingTime 不应该带参数!作业纸上有错字吗?
【问题讨论】:
-
简单...getChillingTime方法没有输入参数。
-
传递给构造函数的东西只是构造函数可以使用的东西,它不会存储它们,它可能会对它们执行一些数学运算,或者将它们标准化然后存储它们。它完全取决于构造函数如何处理它们,而你的构造函数决定对它们不做任何事情。请注意,您可以在大多数优秀的 IDE 中根据对象字段自动生成构造函数(例如,在 netbeans 中,Atl+insert 会显示该选项)
-
按照你想象的方式行事会导致真正的问题;拥有多个构造函数可能非常有用,但它会是一个真正的大杂烩(对您和编译器而言),基于多个构造函数将不同的变量全部协商以将其变量作为字段来准确确定对象字段是什么。然后保证该类肯定具有运行其任何方法所需的一切,而不管调用了哪个构造函数
-
作为一个非常简单的示例,构造函数可能很乐意采用 Vector3d、Vector3f 或双精度数组(大小为 3)。在每种情况下,它(如果需要)在存储之前将其转换为首选的 Vector3d 格式。如果构造函数只是猜测它可能会存储所有 3 种格式,除了 1 之外的所有格式都为空,具体取决于您调用的构造函数