- 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 |