본문 바로가기

Java

Java의 static method는 왜 오버라이딩 되지 않는가

  • Java Static Method는 왜 오버라이딩 되지 않는가?
    • static 키워드로 선언한 대상들은 JVM의 method 영역 (static 영역)에 들어간다.
    • new 키워드로 선언한 대상들을 JVM의 heap 영역에 들어간다.
    • static method는 객체의 인스턴스와 연결되지 않고, 모든 인스턴스가 method 영역을 통해 공유하는 구조이기 때문에 동적 바인딩을 수행할 수 없다. (method 영역도 마찬가지)
  • 그렇다면 static method는 왜 사용하는가?
    • 사실 static method는 객체지향 관점에서 별로 좋지 못한 설계이다. 객체들이 메시지로 주고 받는 컨셉이 static method는 전역적으로 공유되기 때문에, 성립하지 않기 때문이다.
    • 그럼에도 사용하는 이유는 내 기준이지만 클래스로 묶이는 어떠한 개념에 종속되는 “단순한” 동작을 하는 메서드를 사용하기 위함이라 생각한다.
      • 대표적으로 Math클래스를 들 수 있는데, 수학적 연산은 객체 생성 없이 기본 연산자만으로 수행할 수 있다.

'Java' 카테고리의 다른 글

Optional에 대하여  (0) 2022.02.10
Stream에 대하여  (0) 2022.02.10
오늘의 질문 : Java의 Enum은 왜 생성자가 있는가?  (0) 2021.08.17
자바 어노테이션  (0) 2021.07.08
모던 자바인액션 1장  (0) 2021.06.26