private static method를 사용하는 이유를 알고 싶습니다.
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
private static method 를 사용하는 이유를 알고 싶습니다.
[질문 배경]
영한님의 다른 강의(스프링 강의로 기억합니다.) 중에 아주 단순한 기능을 private static method를 사용하셔서 만드신 걸 본적이 있었습니다. 왜 private 접근제어자를 사용하셨는데, 인스턴스 메서드가 아닌 static 메서드를 사용하셨을까? 궁금하여 여러 검색과 이리 저리 혼자서 생각도 많이 해보고 나름대로 정리했습니다만 뇌내 망상 수준이라.. 영한님의 답변만큼 확실한건 없을 것 같아 질문드립니다.
[검색 등을 통해 제가 정리한 내용]
속도 : 인스턴스 메서드의 경우에는 메서드 영역의 virtual table을 거쳐서 이 인스턴스에 매핑되는 메서드를 조회 후 메서드에 접근해야 하지만, static 메서드의 경우에는 그럴 필요가 없어 인스턴스 메서드에 비해 빠르다. -> 이 부분은 제가 여러 정보를 조합한 내용이라 신빙성이 떨어지고, 과연 속도 측면에서 유의미한 차이가 있을까 의문입니다.
객체지향기반의 커뮤니케이션 : private 접근제어자를 명시하여 캡슐화를 하였으나 static 까지 붙여 이 메서드는 내부에서만 쓸 뿐더러 객체지향적으로 대화할 의도가 없으니 거들떠도 보지 말아라 라는 의미를 담고 있는 것이 아니었을까 추측해봅니다.
답변 1
4
안녕하세요. 김경민님
static 메서드는 주로 해당 클래스 내부에서만 사용되며, 클래스의 인스턴스 상태와 관련이 없는 유틸리티 함수나 헬퍼 함수로 사용됩니다. 이러한 메서드는 클래스의 인스턴스와 독립적이기 때문에, 객체의 상태에 의존하지 않는 연산을 수행하는 데 적합합니다. private 접근 제어자를 사용함으로써, 이러한 메서드가 클래스 외부에서 사용되지 않도록 캡슐화를 강화하고, 클래스의 내부 구현을 숨깁니다. 이는 객체지향 설계 원칙 중 하나인 '캡슐화'를 강화하는 방법입니다.
쉽게 이야기하면 public으로 오픈한 static 메서드를 작성할 때 그 내부에서도 코드 중복 제거나, 더 읽기 좋은 s코드를 만들기 위해서 private 메서드가 필요한 경우가 있는데요. 이때 static 메서드를 사용합니다. 강의에서 말씀드린 것 처럼 static은 static만 호출할 수 있으니까요. 물론 해당 private static 메서드는 외부 클래스에 오픈하는 용도가 아니라 해당 클래스 내부에서만 사용할 용도입니다.
참고로 성능에 대한 부분은 너무 미미해서 거의 관계가 없다고 보시면 됩니다.
감사합니다.
질문있습니다
0
20
1
1번 문제 질문입니다.
0
24
1
음악플레이어 문제 중 코드질문
0
18
1
9장 상속 문제와 풀이 질문
0
32
1
강의 자료에 사소한 오타가 있습니다.
0
43
2
매서드 참조값 반환??
0
61
1
접근제어자 - 쇼핑카트 문제에서 상품출력 부분 메서드
0
64
1
자바 기본편 - .(dot)에 관한 질문입니다!
0
82
1
공부방법
0
71
2
상속관계에서 멤버 변수는 오버라이딩 되는 개념이 아닌가요?
0
78
1
static method 질문
0
60
1
캡슐화 문제풀이 ShoppingCart 요구사항에 문제가 있어보입니다. 피드백 주세요
0
91
1
Method1에서 Student 객체
0
70
1
3강 18. null 질문
0
64
1
this 와 super의 호출 순서는 부모-자식관계 떄문만인가요?
0
72
1
팩토리 메서드 패턴과 일반 생성자 사용의 장단점
0
94
1
문의
0
101
1
9장 상속 문제와 풀이 부분 궁금한게 있어서 질문드립니다
0
85
1
상속과 그에 따른 메모리 구조 질문
0
59
1
call메소드에서 멤버에 접근하는 방식을 이해 못 했습니다
0
71
1
수강기한
0
132
1
기본편 객체지향 프로그래밍에 대한 정의
0
82
1
섹션10 상속 메모리 구조 및 문제 관련 질문
0
84
1
추가 지식 학습
0
149
2





