접근제어자와 보안은 관계가없다.

내가 짜고있는 자바코드는 하나의 런타임으로 돌아간다.

은닉, 캡슐화는 보안을 의미하는 용어가 아니다.

하지만 은닉과 캡슐화는 매우 중요한 의미를 가지고있다.

예를들어 내가 짠 클래스와 메소드를 호출하는 다른 개발자에게

“이 메소드는 니가 직접 호출할 필요없어”, “대신 내가 public으로 짠 다른 메소드를 호출해”

라고 알려주는 의미이면서

“세부 작업을 니가 일일히 지시할 필요없어”, “대신 public으로 만들어 놓은 이 메소드를 호출해”

“그러면 추가로 동작해야 하는 행위(유효성 검사 등등)를 다 알아서 할거야”

라고 표현하는 행위이다.

표현을 받는 대상은 다른 개발자일수도있고, 쓰고있는 IDE개발툴 일수도 있다.

IDE 개발툴은 이걸 읽고 개발자가 ctrl + space를 누르면 호출하기를 권장하는 메소드 리스트에

private메소드를 뺀 리스트를 보여준다.

내부 변수 데이터와 처리를 외부로부터 숨기고, 변경 접근을 차단한다는 의미를 표현하고자 했으며

프레임워크, 라이브러리 등의 개발에서는 노출 방지 활용한다.

private으로 해놓은건 함부로 접근하거나, 바꾸지 말라는 표시라고 생각하면된다.