정적 메소드와 인스턴스 메소드의 차이점은 무엇인가요?
정적 메소드(static method)와 인스턴스 메소드(instance method)는 객체 지향 프로그래밍에서 메소드를 정의하는 두 가지 주요 방식입니다.
둘 사이에는 다음과 같은 차이점이 있습니다.
1. 소속 대상 - 정적 메소드: 클래스 자체에 속합니다.
객체 인스턴스 없이도 호출할 수 있습니다.
- 인스턴스 메소드: 클래스의 특정 객체 인스턴스에 속합니다.
객체가 생성되어야만 호출할 수 있습니다.
2. 호출 방법 - 정적 메소드: 클래스명.메소드명() 형태로 호출합니다.
- 인스턴스 메소드: 객체참조변수.메소드명() 형태로 호출합니다.
3. 메소드 내에서 접근 가능한 멤버 - 정적 메소드: 클래스 변수(static 변수)만 직접 접근할 수 있습니다.
인스턴스 변수나 인스턴스 메소드는 객체가 없으므로 직접 접근할 수 없습니다.
- 인스턴스 메소드: 인스턴스 변수, 인스턴스 메소드, 클래스 변수 모두 접근할 수 있습니다.
4. 용도 및 주 사용 사례 - 정적 메소드: 객체 상태에 의존하지 않고 클래스 수준에서 수행하는 작업에 적합합니다.
예를 들어, 유틸리티 함수, 객체 생성 전처리, 팩토리 메소드 등이 있습니다.
- 인스턴스 메소드: 객체 고유의 상태(필드)를 기반으로 동작해야 할 때 사용합니다.
5. this 참조 - 정적 메소드: this 키워드를 사용할 수 없습니다.
왜냐하면 특정 객체 인스턴스가 존재하지 않기 때문입니다.
- 인스턴스 메소드: this 키워드를 사용하여 현재 객체를 참조할 수 있습니다.
인스턴스 메소드는 특정 객체에 속하고 그 객체의 상태를 조작하는 데 사용되며, 정적 메소드는 클래스에 속하고 객체 상태와 무관하게 동작하는 메소드입니다.
프로그래밍 시 상황에 따라 적절히 선택하여 사용해야 합니다.