Study/Java

Java. static 메서드와 인스턴스 메서드

염몽이 2022. 4. 2. 00:38
인스턴트 메서드
  • 인스턴스 생성후, '참조변수.메서드이름()' 으로 호출
  • 인스턴스 멤버(iv, im)와 관련된 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수(iv) 사용가능

 

static 메서드 (클래스 메서드)
  • 객체 생성없이 '클래스이름.메서드이름()' 으로 호출
  • 인스턴스 멤버(iv, im)와 관련없는 작업을 하는 메서드
  • 메서드 내에서 인스턴스 변수(iv) 사용불가

static 메서드와 인스턴스 메서드의 차이점은 인스턴스 변수(iv)를 사용하냐 안하냐의 차이다.

사용하면 인스턴스 메서드이고, 사용하지 않는다면 static 메서드이다.

 

class MyMath {

	long a, b;

	long add() { //인스턴트 메서드

		return a + b; //a,b는 인스턴스 변수(iv) 이다.
	}

	static long add1(long a, long b) { //static 메서드 (클래스 메서드)
		return a + b; //a,b는 지역변수(lv) 이다.
	}

}

static 메서드는 단순히 iv를 사용하지 않을 때 붙이면 된다고 생각하면 된다.

인스턴스 메서드는 iv를 사용한다고 생각하면 된다.

 

public class Main {
	public static void main(String[] args) {
		MyMath mm = new MyMath(); //객체 생성
		mm.a = 100;
		mm.b = 200;
		mm.add(); //인스턴스 메서드
		
		MyMath.add1(200, 300); //static 메서드
		
	}
}

인스턴스 메서드는 먼저 인스턴스를 만들고 메서드를 호출해야한다.

반면, static 메서드 (클래스 메서드)는 클래스이름.메서드이름() 으로 호출하면 된다.

 

메서드 간의 호출과 참조

 

static 메서드인스턴스 변수 (iv)를 사용할 수 없다.

 

메서드도 마찬가지로 static 메서드안에서도 인스턴스 메서드를 사용할 수 없다.

 

공부: https://www.youtube.com/watch?v=Fl4TzjPKAMU&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=65