我知道这可能是一个非常简单的问题,但我似乎无法理解我的生活。
正如标题所述,我只想在Main方法中调用构造函数。
class Example{
public static void main (String[] args)
{
//I want to call the constructor in the mpgCalculator class....
}
public class mpgCalculator {
public double compute(double mpg, double sizeOfTank)
{
double mpL = mpg * 4;
double tankSizeL = sizeOfTank * 4;
double kmpL = mpL * 1.6;
double result = kmpL / tankSizeL;
return result;
}
}
}
答案 0 :(得分:3)
类mpgCalculator
只有默认构造函数,因为你没有定义它。你不要手动调用构造函数;相反,您创建一个新对象并自动调用它。你可能想要这个:
mpgCalculator calc = new mpgCalculator();
在这种特殊情况下,compute
函数实际上与mpgCalculator
的任何特定副本无关,因此如果需要,您可以将其static
public static double compute
})。然后在另一种方法中你可以说:
double kmpL = mpgCalculator.compute(mpg, size);
答案 1 :(得分:3)
另外补充问题;你似乎在使用内部类。如果不首先使用Example对象,则无法以构建它的方式实例化类。
编辑:两个可能解决问题的例子:
首先,静态内部类;基本上就像一个嵌套的C ++类。内部类不需要与另一个实例相关联。
public class InnerClassTest {
public static void main(String[] args) {
InnerClass test = new InnerClass();
}
public static class InnerClass {
InnerClass() {
System.out.println("test");
}
}
}
其次,复杂的内部类从外部类实例化。
public class InnerClassTest {
public static void main(String[] args) {
InnerClassTest example = new InnerClassTest();
InnerClass test = example.new InnerClass();
}
public class InnerClass {
InnerClass() {
System.out.println("test");
}
}
}
如果您只需要一个实用功能,请按照chrylis的回答。
答案 2 :(得分:0)
因为,mpgCalculator
(应该重命名为MpgCalculator
或MPGCalculator
以区别于变量名称)是Example
的内部类,您需要一个外部类实例实例化它。
double value = new Example().new MpgCalculator().compute();
但是,这看起来像一个实用程序类,在这种情况下,您可以通过将其static
嵌套来实现它。
public static class MpgCalculator {
// ...
}
然后,您可以创建其实例,而无需创建外部类实例。
double value = new MpgCalculator().compute();