Instance Method/Static Method


メソッド(method)は,instance methodとclass methodに大別される.


簡単な例を見てみましょう。

public class MyMath2 {
    long a, b;

    long add() {
        return a + b;
    }

    
    
static long add(long a, long b) {
        return a + b;
    }

}
ここには静的な方法があります.
static long add(long a, long b) {
        return a + b;
    }
静的な方法とはどういう意味ですか.
static付きメソッドはclass領域のメソッドであり,インスタンスメソッドとは異なる.
public class MyTest {

    public static void main(String[] args) {
        System.out.println(MyMath2.add(200L, 300L));
        //클래스 메서드 호출

        MyMath2 mm = new MyMath2();
        mm.a = 100L;
        mm.b = 200L;
        //인스턴스 메서드 호출
        System.out.println(mm.add());
    }
}

静的メソッドはクラス名です。メソッド名で直接呼び出すことができます。


すなわち、インスタンスを作成する必要がなく呼び出されます.
逆に、インスタンスメソッドでは、新しいインスタンスを作成し、参照変数を使用してアクセスできます.
では、オブジェクトが作成されていない使用可能な静的メソッドでは、インスタンス変数(iv)を使用できますか?
もちろん使えません.
インスタンスメソッドでは、新しいオブジェクトを作成してインスタンス変数を使用できますが、クラスメソッドの静的メソッドではインスタンス変数は使用できません.
static long add(long a, long b) {
        return a + b;
    }
したがって,静的手法におけるパラメータa,bは領域変数(lv)を表す.

コアを整理!静的メソッドとは、オブジェクトを作成せずに呼び出すメソッドです。


静的メソッドは、インスタンス変数(iv)を使用する必要がない場合に使用されます。

   public static void main(String[] args) {
        System.out.println(MyMath2.add(200L, 300L));
        //클래스 메서드 호출

        MyMath2 mm = new MyMath2();
        mm.a = 100L;
        mm.b = 200L;
        //인스턴스 메서드 호출
        System.out.println(mm.add());
    }
コードをよく見ると、インスタンスメソッドではインスタンス変数を使用する必要があるため、インスタンスを作成する必要があります.
ただし、クラスメソッドではインスタンス変数は使用されないため、オブジェクトを作成する必要はありません.
 System.out.println(MyMath2.add(200L, 300L));
パラメータ200 L,300 Lはaddメソッドの領域変数として用いられる.

メソッド呼び出し

public class PracticeMethod {
    
    int a;
    static int b;
    
    void instanceMethod() {
        System.out.println(a); //인스턴스변수
        System.out.println(b); //클래스 변수
    }
}
インスタンスメソッドインスタンスメソッド()では、インスタンス変数aおよびクラス変数bを使用することができる.
 static void classMethod() {
        System.out.println(a); //error
        System.out.println(b); //클래스 변수
    }
ただし、クラスメソッドclassMethod()では、インスタンス変数aは使用できません.

これは、前述したように、クラスメソッドではインスタンス変数の使用が許可されていないためです。


インスタンス変数は、オブジェクトの作成後に呼び出され、使用できるため、オブジェクトが作成されていない呼び出し可能な静的メソッドでは、もちろんインスタンス変数は使用できません。