-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
4 Weeks - [인터페이스에서 정적 메서드와 디폴트 메서드] #68
Comments
책에서 언급된 내용은 다음과 같습니다
첫 번째로 헷갈릴 수 있었던 요소 중 하나가
그렇다면 정적 메서드를 따로 나눠서 유틸클래스로 활용하는 방법은 공통된 기능을 재사용하기 좋다고 생각하는데 왜 인터페이스에 정적 메서드를 제공할 수 있도록 변경되었는가?
oracle java 문서에 의하면 인터페이스에 정적 메서드를 사용할 수 있도록 추가한 것은 별도의 클래스가 아닌 동일한인터페이스에서 특정한 정적 메서드를 유지하여 쉽게 구성할 수 있도록 하기 위함이라고 말하고 있습니다 인터페이스에 특정한 정적 메서드를 구현하면 얻어올 수 있는 장점은
인터페이스에 정적 메서드를 제공할 수 있게 바뀐것과 유사하게 디폴트 메서드를 제공할 수 있다는 것은 유사한 장단점이 있습니다 장점
단점
위의 내용들로는 아직 디폴트 메서드를 사용하나, 정적 메서드를 사용하나 큰 차이가 없어보이며, 정적 메서드가 오히려 구현체를 만들지 않고, 인스턴스 생성도 필요 없이 호출할 수 있어 더 좋아보일 수 있습니다 이 부분에 대해 디폴트 메서드와 정적 메서드를 비교하려면 객체지향적 관점
위의 특성을 통해 정적 메서드는 사용하는 클래스가 한정적이며 이는 결합도가 높아지는 것을 생각해볼 수 있다 메모리 관점?
자바 8이전에는 Method Area와 Heap 메모리 영역이 모두 JVM이 관리했기 때문에 Method Area의 메모리크기가 GC에 영향을 줬다 자바 8이후로 Method Area는 JVM이 아닌 OS의 관리 영역으로 하여 GC의 효율을 높였다고 하며 정적 변수에 의해 GC에 영향을 끼치지 않는다고 한다 따라서 메모리적 관점에서 성능을 논하지는 않는다는 것 입니다 JVM을 살펴봤으니 메서드 호출 시 차이점 정적 메소드가 인터페이스 구현체의 메서드를 호출하는 것 보다 속도가 빠릅니다 (하지만 거의 무시해도 될 만큼 적은 차이) 그 이유는 정적 메서드는 프로그램 실행 시점에 이미 컴파일된 바이트 코드를 저장하고 있음 결론적으로 디폴트 메서드와 정적 메서드는 인터페이스 내에서 둘 다 사용되고 있으며 유틸리티 메서드? Reference |
문제
인터페이스에서 정적 메서드와 디폴트 메서드의 필요성과 해당 메서드들이 포함된 인터페이스를 구현, 상속 시 차이점이 궁금합니다!
contents - 세부 내용
둘의 필요성과 차이점이 헷갈리기도 하고, 다들 다시 한번 알아보면 좋을 것 같아 질문해 봤습니다.
참고
p.412
The text was updated successfully, but these errors were encountered: