- 데이터와 기능을 한 곳에 묶어서 처리한다.
- 객체 내에는 속성과 메서드가 있다.
- 데이터(속성)과 기능(메서드)를 하나의 객체 안에 넣어서 묶는다.
- 그렇기 때문에 내부 데이터나 기능의 구현은 객체 안에 있어, 외부에 노출시키지 않고 동작하는 코드만 노출시킨다.
⇒ 은닉화의 특징을 갖게 된다.- 느슨한 결합(Loose Coupling)을 가능하게 한다.
-외부로 노출된 코드의 흐름에 영향을 주지 않고 객체 내의 메소드를 수정할 수 있다.
- 실제로 노출되는 부분 즉, 인터페이스를 단순화 하는 것을 말한다.
- 복잡한 내부 구현을 노출시키지 않음으로 예기치 못한 사용상의 변화를 막을 수 있다.
- 사용자에게 불필요한 메소드를 노출시키지 않음으로서 인터페이스를 단순하게 한다.
- 캡슐화는 은닉화의 특징을 가지고 있고, 추상화는 단순화의 특징을 갖는다.
기본 클래스(base class)의 속성과 메서드를 파생 클래스(derived class)에게 상속시킴으로 불필요한 코드를 줄일 수 있다.
즉, 중복되는 코드를 제거한다.ㅓ
→ 코드의 재사용성을 높이는 장점이 있다.
예를 들어, 사람이라는 기본 클래스가 있다.
이 클래스의 속성으로는 이름, 성별, 나이가 있고,
메서드로는 먹다, 자다, 걷다 등이 있다.
학생은 본질적으로 사람이기 때문에 사람의 속성과 메서드를 물려받는다.
따라서, 학생이라는 파생 클래스에는
학생의 속성으로 다니는 학교,
메서드로는 학교에 가다, 공부한다 등을 추가하면 된다.
- 같은 메서드를 다양한 방식으로, 다르게 구현할 수 있다.
→ 객체의 특성에 맞게 같은 메서드를 다른 방식으로 작성할 수 있다.