정적 메서드

다음 코드의 (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()는 밑줄이 없으므로 일반(인스턴스) 멤버 함수

0건의 항목