staticメソッドから非staticメソッドを呼び出したい場合は直接呼び出すことができません。
インスタンスを生成し、そのインスタンスを通して呼び出す必要があります。
この記事ではstaticメソッドの概要に加えて、staticメソッドから非staticメソッドを呼び出す方法について記載します。
目次
1.staticメソッドとは
2.非staticメソッドからstaticメソッドを呼び出す
3.staticメソッドから非staticメソッドを呼び出す
1. staticメソッドとは
staticメソッドは、戻り値の前にstaticを付けることで宣言できます。
staticメソッドで表現された変数はstatic変数またはクラス変数と呼ばれます。
以下の例からは、staticMethodがstatic変数(クラス変数)であり、staticMethodと命名されたメソッドがstaticメソッドであることが分かります。
class TestSample {
static void staticMethod() {
}
}
2. 非staticメソッドからstaticメソッドを呼び出す
Javaではstaticで宣言された変数が含まれるクラスはインスタンス化せずに呼び出すことができます。
呼び出すには「クラス名.」の後にstatic変数名を記載しますが、同じクラス内であれば、クラス名の記載は不要です。
以下の例のように、instanceメソッドや他のstaticメソッドからstaticメソッドを呼び出すことが可能です。
class TestSample {
static void staticMethod() {
}
void instanceMethod() {
staticMethod();
}
static void staticMethod2(){
staticMethod();
}
}
3. staticメソッドから非staticメソッドを呼び出す
反対に、staticメソッドからinstanceメソッド(=非staticメソッド)を呼び出す場合は、staticメソッド内でインスタンスを生成する必要があります。
非staticメソッドはstaticメソッドから直接呼び出すことはできないので、インスタンスを通して間接的に呼び出します。
以下の例では、TestSampleクラスのインスタンス「testSample」を生成してから、「testSample」を通してinstanceMethodを呼び出しています。
class TestSample {
static void staticMethod() {
TestSample testSample = new TestSample();
testSample.instanceMethod();
}
void instanceMethod() {
}
}