13번째 TIL

꽃봉우리·2024년 5월 1일

접근 제어자에 대한 한 가지의 의문점

어제 접근 제어자에 대해서 좀 더 알아가면서 한 가지의 의문이 생겼다.
private와 protected는 직접 접근을 하지 못하게 할 때 쓰이는 것으로 활용을 알겠는데, default는 public과 비교했을 때 외부 패키지까지 접근하지 못하고 같은 클래스와 같은 패키지까지만 접근이 가능한데 그럼 어느 상황에 쓰일까? 하는 의문이였다.

보안 문제

튜터님께 질문을 드렸을 때, 실무에서 default를 거의 써본 적이 없다고 하셨다. 그 이유는 ' 같은 패지키라도 다른 클래스에서 필드를 직접 접근할 수 있는 것은 위험하다.'라고 답변해주셨다. 이 답변을 들었을 때, protected도 같은 패키지여도 보안때문에 상속으로 만들어서 사용한다는 것을 깨달았다. 그러면 public도 결국 보안 문제로 인해서 실무에서 잘 쓰이지 않는 것 같아서 이 부분에 대해서도 질문을 드렸고 답변은 역시 생각대로 보안 문제로 잘 쓰이지 않는다고 하셨다.

과제에 적용시키기

이번에 했던 개인 과제에서 protected와 public을 정말 많이 사용하였다. App 클래스을 보면 외부에서 접근 하는 것이 없기 때문에 보안을 중요시하다고 생각하면 private로 닫아버리는게 낫겠다라고 생각했다. protected를 쓰지 않는 이유는 App클래스 외부에서 접근을 하는 것이 없기 때문에 private로 메서드를 만들어서 묶어두면 좋을 것 같았다.


원래 코드에서 접근제어자를 수정해서 다시 만들 부분이다.
private 접근제어자를 이용해서 새로운 메서드를 만든 뒤 main 메서드로 불러서 쓰는 것을 구현했다.

이런 식으로 원의 넓이를 구하는 메서드인 circle과 사칙연산을 계산하는 메서드인 arithemtic으로 나누어 main 메서드에서의 코드를 좀 더 간결화 시켰다.

0개의 댓글