: 프로그램 설계 철학 중 하나 (객체로 그룹화 된다)
= 사람이 세계를 보고 이해하는 방법을 흉내낸 방법론 (하나의 요소를 객체 단위로 구분시켜 생각)
객체는 한 번 만들고 나면, 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.
: 데이터(속성)와 기능(메서드)을 하나의 단위로 묶는 것
디테일한 구현이나 데이터는 숨기고, 객체 외부에 필요한 동작만 노출시킨다.
은닉화(hiding) : 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
느슨한 결합(Loose Coupling)에 유리하다 => 언제든 구현 수정 가능
: 내부 구현은 복잡하지만 실제로 노출되는 부분은 단순하게 만드는 것
인터페이스를 단순화 시킬 수 있다.
(인터페이스 : 클래스 정의 시 메서드와 속성만을 정의한 것)
- 추상화가 캡슐화랑 다른점
클래스를 사용하는 사람이 필요하지 않는 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 맞춰져 있다.
: 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는 것
( 기본 클래스 = 부모, 파생 클래스 = 자식 )
: 다양한 형태, 같은 이름을 가진 메서드라도 조금씩 다르게 작동한다.
캡슐화 : 코드가 복잡하지 않고, 재사용성을 높여줌
추상화 : 코드가 복잡하지 않고, 단순화된 사용으로 변화에 대한 영향 최소화시켜줌
상속 : 불필요한 코드를 줄여 재사용성을 높여줌
다형성 : 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 다르게 작성하는 것이 가능해짐