inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

김영한의 실전 자바 - 기본편

static 메서드3

private static method를 사용하는 이유를 알고 싶습니다.

해결된 질문

2211

김경민

작성한 질문수 8

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]

private static method 를 사용하는 이유를 알고 싶습니다.

 

[질문 배경]
영한님의 다른 강의(스프링 강의로 기억합니다.) 중에 아주 단순한 기능을 private static method를 사용하셔서 만드신 걸 본적이 있었습니다. 왜 private 접근제어자를 사용하셨는데, 인스턴스 메서드가 아닌 static 메서드를 사용하셨을까? 궁금하여 여러 검색과 이리 저리 혼자서 생각도 많이 해보고 나름대로 정리했습니다만 뇌내 망상 수준이라.. 영한님의 답변만큼 확실한건 없을 것 같아 질문드립니다.

 

[검색 등을 통해 제가 정리한 내용]

  1. 속도 : 인스턴스 메서드의 경우에는 메서드 영역의 virtual table을 거쳐서 이 인스턴스에 매핑되는 메서드를 조회 후 메서드에 접근해야 하지만, static 메서드의 경우에는 그럴 필요가 없어 인스턴스 메서드에 비해 빠르다. -> 이 부분은 제가 여러 정보를 조합한 내용이라 신빙성이 떨어지고, 과연 속도 측면에서 유의미한 차이가 있을까 의문입니다.

  2. 객체지향기반의 커뮤니케이션 : private 접근제어자를 명시하여 캡슐화를 하였으나 static 까지 붙여 이 메서드는 내부에서만 쓸 뿐더러 객체지향적으로 대화할 의도가 없으니 거들떠도 보지 말아라 라는 의미를 담고 있는 것이 아니었을까 추측해봅니다.

 

java 객체지향 static

답변 1

4

김영한

안녕하세요. 김경민님

static 메서드는 주로 해당 클래스 내부에서만 사용되며, 클래스의 인스턴스 상태와 관련이 없는 유틸리티 함수나 헬퍼 함수로 사용됩니다. 이러한 메서드는 클래스의 인스턴스와 독립적이기 때문에, 객체의 상태에 의존하지 않는 연산을 수행하는 데 적합합니다. private 접근 제어자를 사용함으로써, 이러한 메서드가 클래스 외부에서 사용되지 않도록 캡슐화를 강화하고, 클래스의 내부 구현을 숨깁니다. 이는 객체지향 설계 원칙 중 하나인 '캡슐화'를 강화하는 방법입니다.

쉽게 이야기하면 public으로 오픈한 static 메서드를 작성할 때 그 내부에서도 코드 중복 제거나, 더 읽기 좋은 s코드를 만들기 위해서 private 메서드가 필요한 경우가 있는데요. 이때 static 메서드를 사용합니다. 강의에서 말씀드린 것 처럼 static은 static만 호출할 수 있으니까요. 물론 해당 private static 메서드는 외부 클래스에 오픈하는 용도가 아니라 해당 클래스 내부에서만 사용할 용도입니다.

참고로 성능에 대한 부분은 너무 미미해서 거의 관계가 없다고 보시면 됩니다.

감사합니다.

1

김경민

감사합니다 영한님 정말 많은 도움이 되었습니다.

질문있습니다

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