繁体   English   中英

如何在main方法中从类调用构造函数

[英]How to call a constructor from a class, in main method

我知道这可能是一个非常简单的问题,但我似乎无法一生解决这个问题。

如标题所示,我只想在Main Method中调用构造函数。

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

mpgCalculator类仅具有默认构造函数,因为您没有定义一个构造函数。 您无需手动调用构造函数; 而是创建一个新对象,然后自动调用它。 您可能想要这样:

mpgCalculator calc = new mpgCalculator();

在这种特殊情况下, compute函数实际上与mpgCalculator任何特定副本mpgCalculator ,因此您可以根据需要将其mpgCalculator staticpublic static double compute )。 然后可以用另一种方法说:

double kmpL = mpgCalculator.compute(mpg, size);

使问题进一步增加; 您似乎正在使用内部类。 如果没有首先使用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的回答。

由于mpgCalculator (应重命名为MpgCalculatorMPGCalculator以将其与变量名区MPGCalculator )是Example的内部类,因此需要外部类实例来实例化它。

double value = new Example().new MpgCalculator().compute();

但是,这似乎是一个实用程序类,在这种情况下,可以通过将其设置为static来使其嵌套。

public static class MpgCalculator {
    // ...
}

然后,您可以创建其实例,而无需创建外部类实例。

double value = new MpgCalculator().compute();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM