2013-08-25 140 views
2

我知道這可能是一個超級簡單的問題,但我似乎無法弄清楚我的生活。如何調用一個類的構造函數,主要方法

作爲標題狀態,我只是想調用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; 
    } 
    } 
} 
+1

在Java中,類名應該以大寫字母('MpgCalculator')開頭。這不是語言要求,但它是一種通用慣例,它使讀取代碼變得更容易。 – chrylis

回答

3

mpgCalculator只有默認的構造函數,因爲您沒有定義一個。您不要手動調用構造函數;相反,你創建一個新的對象,它會自動調用。你可能希望這樣的:

mpgCalculator calc = new mpgCalculator(); 

在這種特殊情況下,compute功能實際上並沒有涉及到任何mpgCalculator特定副本,所以你可以把它static,如果你想(public static double compute)。然後用另一種方法說:

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

要額外添加到問題中;你似乎在使用內部類。你不能以你創建它的方式實例化這個類,而不需要先創建一個例子對象。

編輯:可能的解決方案,您的問題兩個例子:

首先,靜態內部類;基本上就像嵌套的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的答案。

+0

是否這樣? '類實施例{ 公共靜態無效的主要(字串[] args) { } 公共類mpgCalculator { mpgCalculator計算值=新mpgCalculator(); public double result = calc.compute(1.0,2。0); public double compute(double mpg,double sizeOfTank) double mpL = mpg * 4; double tankSizeL = sizeOfTank * 4; double kmpL = mpL * 1.6; double result = kmpL/tankSizeL; 返回結果; } } }' 上帝我吸這個。 – user90000000009

0

由於,mpgCalculator(應被重命名爲MpgCalculatorMPGCalculator從變量名區分它)是一個內部類的Example需要外部類實例來實例化。

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

但是,這似乎是一個實用工具類,在這種情況下,你可以把它嵌套通過使static

public static class MpgCalculator { 
    // ... 
} 

然後,您可以創建其實例,而無需創建外部類實例。

double value = new MpgCalculator().compute(); 
相關問題