정적 메서드
다음 코드의 (1), (2)는 각각 어떻게 되는가? (정적 메서드 호출 방법)
public class Pig {
public static int boom() {
return 0;
}
}
// main
Pig pig = new Pig();
Pig.boom(); // (1)
pig.boom(); // (2)- (1) 클래스명으로 호출 → OK (권장 방식)
- (2) 개체로 호출 → 컴파일·실행은 되지만 권장하지 않음
- 정적 멤버는 개체가 아니라 클래스 소속 → new 없이 클래스명으로 호출하는 게 맞음
- 헷갈리는 포인트: 개체로도 호출되지만, 정적이라는 사실이 가려져 오해를 유발하므로 권장 X
클래스 다이어그램에서 정적 멤버 함수는 어떻게 표시하는가?
밑줄(underline)
- 멤버 함수(또는 멤버 변수)에 밑줄이 있으면 정적(static)
다음 다이어그램에서 정적 멤버 함수는 무엇인가?
┌──────────────────────┐
│ Pig
├──────────────────────┤
├──────────────────────┤
│ + boom() : int
│ ──────────── (밑줄)
│ + oink() : void
└──────────────────────┘boom() : int
boom()에는 밑줄이 있으므로 정적 멤버 함수oink()는 밑줄이 없으므로 일반(인스턴스) 멤버 함수