데이터와 기능이 별개로 취급되지 않고, 한 번에 묶여서 처리하는 것이 가능
크게 네 가지 기본적인 개념이 있다.
추상화 Abstraction
내부 구현은 아주 복잡하지만 실제로 노출되는 부분은 단순하게 만든다는 개념
너무 많은 기능들이 노출되지 않은 덕분에 예기치 못한 사용상의 변화가 일어나지 않도록 만들 수 있음.
상속 Inheritance
부모 클래스의 특징을 자식 클래스가 물려받는 것
더 자세하게는 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다라고 할 수 있다.
다형성 Polymorphism
같은 이름을 가진 메서드라도 조금씩 다르게 작동한다.
언어에서 다형성을 제공하지 않는다면, 기본 클래스에 종류별로 분기를 시켜서 하나하나 다르게 만들어야 한다.