객체지향 특성 중에 캡슐화에 대해 알아볼게요!
객체지향 4대 특성 중에 캡슐화에 대해 알아볼게요!
스프링 입문을 위한 자바 객체 지향의 원리와 이해- 김종민 지음 을 참고했습니다!
객체 지향의 4대 특성은 캡슐화, 상속, 추상화, 다형성 이 있어요. 캡! 상추다! 라고 외우면 잘 외워지니까 반드시 외우도록 해요.
캡슐화 : 정보은닉
자바에서 정보은닉이라 하면 접근제어자(private, default, protected, public)가 생각날거에요. 접근제어자의 범위 먼저 봅시다.
접근제어자 | 설명 |
---|---|
public | 모두가 접근 가능 |
protected | 상속 / 같은 패키지 내의 클래스에서 접근 가능 |
default | 같은 패키지 내의 클래스에서 접근 가능 |
private | 본인만 접근 가능 |
접근제어자를 통해 외부에서 객체 내부 정보를 직접 접근, 조작하지 못하게 막는 것이 캡슐화의 하나의 예 입니다.
캡슐화의 특성
추상화 단위가 된다.
- 추상화란 불필요한 부분을 숨기고 의미 있는 부분만 표현한다.
- 캡슐화가 된다는건? 곧 추상가 된다는 것!
재사용의 단위가 된다.
- 객체 지향에서 캡슐화의 단위는 클래스 단위로 정의하고, 클래스를 통해 객체 단위로 생성되어 움직인다.
정보은닉을 실현한다.
- 캡슐화를 통해 인터페이스를 제외한 데이터와 함수들을 캡슐 속으로 숨기기 때문에 정보은닉이 실현된다.
정보은닉
다른 객체에서 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것이에요. 캡슐화를 통한 정보은닉의 장점은 아래와 같아요.
- 객체에 포함된 정보의 손상과 오용을 막을 수 있다.
- 객체 내부의 조작 방법이 바뀌어도 사용방법은 바뀌지 않는다.
- 데이터가 바뀌어도 다른 객체에 영향을 주지 않아 독립성이 유지
객체 멤버, 정적 멤버
그리고 객체 멤버(인스턴스 멤버), 정적 멤버(클래스 멤버)를 사용할 때 아래와 같은 사항을 기억해놔요!
상속을 받지 않았다면 객체 멤버는 객체를 생성한 후에 객체 참조 변수를 이용해 접근해야 한다.
정적 멤버는 클래스명.정적멤버 형식으로 접근하는 것을 권장한다.
예를 들어 사람.인구 , 고양이.다리개수 형식으로 접근하는 것이 홍길동.인구수 , 키티.다리개수 형식으로 접근하는 것보다 권장돼요. 즉! 정적 멤버에 접근할 때는 객체참조변수명.정적멤버 형식으로 접근하기보다는 클래스명.정적멤버 형식으로 접근하라는 것이에요!
반응형