접근지정자는 객체지향의 4대 개념(추상화, 캡슐화, 상속, 다형성)에서 캡슐화와 관련되어 있다.
객체지향 프로그래밍의 장점인 캡슐화와, 클래스의 고유성 등을 위해서 클래스 내에 멤버(필드, 메서드, 속성, 이벤트 등)에게 접근하는 것을 제한하는 역할을 한다.
아래의 표로 접근 권한 범위를 자세하게 확인할 수 있음!(허용 : O, 제한 : X)
접근자 | 클래스 내부 | 패키지 | 상속받은 클래스 | 이외의 영역 |
---|---|---|---|---|
private | o | x | x | x |
default | o | o | x | x |
protected | o | o | o | x |
public | o | o | o | o |
📌 접근지정자 권한
📌 접근지정자 사용
애플리케이션이 커진다는 것은 그만큼 문제점이 생길 확률도 커진다는 말이되는데, 특히 로직이 망가지는 첫 번째 원인은 사용자라고 할 수 있다.
즉, 객체를 사용하는 입장에서 객체 내부적으로 사용하는 변수나 메소드에 접근함으로써 개발자가 의도하지 못한 오동작을 일으키기도 한다.
이러한 문제로부터 객체의 로직을 보호하기 위해서는 멤버에 따라서 외부의 접근을 허용하거나 차단해야 할 필요가 생기는데, 마치 은행이 누구나 접근할 수 있는 창구와 관계자 외에는 출입이 엄격하게 통제되는 금고를 구분하고 있는 이유와 같다.
접근제어자를 사용하는 또 다른 이유는 사용자에게 객체를 조작할 수 있는 수단만을 제공함으로써 결과적으로 객체의 사용에 집중할 수 있도록 돕기 위함이다.
즉, 의도치 않은 실수를 줄이기 위함 과 정보 은닉의 목적 으로 사용할 수 있습니다.
항상 은닉화를 전제로 합니다. 관련이 있는 데이터 그리고 동작들을 하나로 묶어 요약하고 사용자에게는 내부적인 접근을 허용하지 않는 대신에 사용의 편의성을 제공해 준다.
📌 데이터 보호의 장점
은닉화를 통해 데이터의 접근을 제어할 수 있다.
📌 유지 보수성의 장점
객체에 대한 수정 작업으로 인해 객체 활용도에 문제가 발생한다면 제품 하나에 대한 upgrade가 상당히 부담스러울 것입니다. 자바에서는 각 기능을 하나의 모듈(부품)처럼 활용하여 객체간의 이식성이 높고 립적인 면을 유지하는 장점이 있다.
📌 사용자 편의성의 장점
전기 압력밥솥이 어떤 원리와 어떤 과정으로 밥을 지어내는지는 알 필요가 없이 그냥 사용법만 익혀서 사용한다!
그와 마찬가지로, 세부적인 과정을 알 필요 없이 사용할 수 있다.
ex) 돈을 입금할 때, 은행원에게 모든 동작을 넘겨줍니다. 그러면 사용자는 내부 동작을 생각할 필요 없이
목적한 일을 할 수 있다.