2015-11-29 11 views
5

私は学校のプログラムに少し問題があります。コンストラクタを持たない別のクラスからメソッドを呼び出す方法

FactorialCalculatorクラスのfactorialというメソッドを、BCDクラスのfactorialというメソッドで呼び出す必要があります。通常、私はこのような何かをするだろう:

FactorialCalculator newCalc = new FactorialCalculator(8); 

しかし、factorialFactorialCalculatorクラスの唯一の方法であり、Iは、コンストラクタを含む任意の複数の方法を行うことは許されないのです。

提案がありますか?

+2

コンストラクタを定義しないと、デフォルトのコンストラクタがfreeになることに注意してください。 – chrylis

答えて

8

静的方法として、それを作成します。

public class FactorialCalculator { 
    public static int factorial(int number) { 
     // Calculate factorial of number 
    } 
} 

そして、あなたはこのようにそれを呼び出すことができます。

int factorial = FactorialCalculator.factorial(5); // for the example 

静的方法は、任意のインスタンスに関連付けられていない方法であり、 & Classname.staticMethod()表記を使用してアクセスできます。

1

静的メソッドの場合は、FactorialCalculator.factorial(...)となります。

3

シンプルで、Staticにすると、別のクラスから呼び出すことができます。 は静的メソッドとしてそれを作成します。

class FactorialCalculator { 
    public static int factorial(int number) { 
     ...YourCode... 
    } 
} 

そして、あなたはこのようにそれを呼び出すことができます。

int number = 10; 
int f = FactorialCalculator.factorial(number); 
1

あなただけFactorialCalculator fc = new FactorialCalculator();あるデフォルトコンストラクタを使用することができます。そのように簡単です。しかし、教師が静的メソッドを作成してほしいと思うようです。静的メソッドは、オブジェクトの関数ではなく、クラスのユーティリティのようなものです。したがって、あなたの場合は、FactorialCalculatorをオブジェクトクラスではなくユーティリティクラスにする必要があります。 public static int factorial(int num) {}はそのトリックを行うべきです。このようにして、あなたの例のようにFactorialCalculator.factorial(5)に行けます。

希望すると便利です。

1

まず、標準のコンストラクタがあります。このコンストラクタにはパラメータはありません。したがって、FactorialCalculatorを指定し、そのファクタル -Methodと呼ぶことができます。

関連する問題