Java/자바 정리

49. static 메서드에서 인스턴스 멤버 사용하기

코딩하는냥이 2025. 4. 28. 15:48
반응형

이번 글에서는 static 메서드 안에서
인스턴스 멤버(필드, 메서드)를 직접 사용하려면 객체를 생성해야 한다는 규칙을 학습합니다.
static은 클래스에 소속되고, 인스턴스 멤버는 객체에 소속되기 때문에 이 둘은 구분해서 사용해야 합니다.


📌 실행 코드 (Car.java)

package ch06.sec10.exam03;

public class Car {
	int speed;

	void run() {
		System.out.println(speed + "으로 달립니다.");
	}

	static void simulate() {
		Car car = new Car();
		car.speed = 200;
		car.run();
	}

	public static void main(String[] args) {
		simulate();

		Car car = new Car();
		car.speed = 60;
		car.run();
	}
}

💬 코드 설명

  • int speed
    → 자동차 속도를 저장하는 인스턴스 필드
  • void run()
    → 현재 속도로 달리는 메시지 출력 (인스턴스 메서드)
  • static void simulate()
    → static 메서드이기 때문에 직접 speed나 run()을 호출할 수 없음 → 대신 new Car()로 객체를 생성한 뒤 인스턴스 필드와 메서드를 사용
  • main()
    → 프로그램 시작점
    → simulate() 호출 후, 별도로 또 다른 Car 객체를 생성해서 동작

💻 실행 결과

200으로 달립니다.
60으로 달립니다.

📌 간단 정리

구분 설명
simulate() 객체를 직접 생성하여 인스턴스 멤버 사용
main() static 메서드. simulate() 호출 후, 별도 Car 객체 생성

💡 포인트 정리

  • static 메서드에서는 인스턴스 필드나 메서드를 직접 사용할 수 없다
  • 사용하려면 객체를 생성해야 한다 (new 클래스명())
  • static 메서드는 프로그램 시작이나 공통 기능 수행에 적합
  • 객체별로 독립적인 상태(speed)를 가질 수 있음