캡슐화를 통해 외부에서 내부의 정보에 접근하거나 변경할 수 없게 직접적인 접근을 막고 객체가 제공하는 필드와 메소드를 통해서만 접근이 가능하다.
이렇게 접근을 제한함으로써 유지보수나 확장 시 오류의 범위를 최소화할 수 있고 객체 내의 정보 손상과 오용을 방지하고 데이터가 변경되어도 다른 객체에 영향을 주지 않아 독립성이 좋다.
캡슐화는 접근제어자를 통해 이루어진다.
변수의 이름이나 클래스, 메서드의 이름 앞에 명시하여서 작성한다. 자바에서의 접근 제어자의 종류는 4가지이다.
위의 접근 제어자들을 적절히 사용하여서 자바의 캡슐화를 진행시키는 것이다. 그렇다면 이렇게 접근이 제한된 변수, 메소드, 클래스는 아예 못 못 건들이는가라고 말하였을 땐 그것은 아니다. 왜냐하면 위에서 기재한 것 처럼 직접적인 접근을 막은거지 간접적인 접근은 열려있기 때문이다. 이러한 것에 접근을 하기 위해서 사용하는 것이 Getter / Setter 이다.
이 두가지는 메소드로서 각 변수의 저장 및 초기화를 맡는 Setter 를 통해 진행되고, Getter를 통해 저장된 값을 가져온다. 이 메소드를 사용시엔 약속이 있다.
이러한 약속들을 꼭 지켜야한다는 아니지만 지킨다면 상호 간의 가독성이 오를 것이라고 생각된다.
위에처럼 일종의 Getter/Setter도 컴포넌트인데 이를 자바 빈즈라고도 부를 수 있다. 자바언어에서 사용하는 복합적 데이터 표현의 최소 단위로서, 재사용이 가능한 컴포넌트(구성요소)를 생성할 수 있다.
자바 빈즈 클래스로서 작동하기 위해선 상호간의 약속과 일련의 관례를 잘 따라줘야한다.