본문 바로가기
📍 Back-End/🜸 Java

[Java] 자바 접근제어자

by 예리Yelee 2021. 6. 16.
반응형

회사에서 열심히 코드를 짜고 있는데

 

@Getter
@Setter
@ToString
public class PayloadRequestModel {
  private String bedroomLight;
  private String bathroomLight;
}

 

위의 코드를 보고 클래스 내 멤버 변수에 private을 '굳이' 왜 쓰냐는 질문을 받았다.

해당 클래스 내에서만 사용할 예정이기에 private으로 지정했는데 왜 지정했냐니..

시니어의 질문 의도는 private을 굳이 작성하지 않아도 default가 private이기 때문에 '굳이' 적지 않아도 된다는 것이다

 

 

내가 처음 자바를 배울 때 public, private, protected, default 이렇게 총 4개의 접근제어자가 있다고 배웠는데

private을 붙이지 않으면 default가 private이라니 이게 무슨 말인가요..? 

 

그래서 알아봤다

public / protected / default / private

(접근성 높음) public > protected > default > private (접근성 낮음)

 

public : 접근 제한이 전혀 없다! 프로젝트 내 어떤 클래스 및 메서드에서 사용이 가능

protected : 같은 패키지 내 혹은 다른 패키지의 자손 클래스에서 접근 가능

default : 같은 패키지 내에서만 사용 가능 (굳이 명시하지 않아도 된다)

private : 같은 클래슨 내에서만 접근 가능

 

접근제어자를 모두 public으로 설정해도 프로그램 동작에는 큰 문제가 없지만

코딩 중 미연의 실수를 방지하기 위해 적재 적소에 맞게 접근제어자를 사용하는 것이 좋다

 

결론

시니어 분께 다시 여쭤보니 '이래서 개발은 끊임없이 공부해야 돼' 라는 답변이.. 😂

private을 붙이지 않으면 default 변수가 되고 private과 default는 다릅니다!

현재 코드상 붙이나 안붙이나 큰 문제는 없지만 개념이 다르다는 것은 꼭 알아둬야 한다 

반응형

댓글