간단히 말하자면 객체의 관점에서 프로그래밍 하는 것이라 말 할 수 있다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍 하는 것을 의마한다.
객체의 공통적인 속성과 기능을 추출하여 정의하는 것을 의미한다.
실제로 존재하는 개체들을 프로그램으로 만들기 위해 공통 특정을 파악해 필요없는 특성을 제거하는 과정을 뜻한다. 객체들은 실제의 모습이지만, 클래스는 객체들이 어떤 특징이 있어야 한다고 정의하는 추상화된 개념이다.
데이터와 코드의 형태를 함께 묶어 외부에서 알 수 없도록 하고, 데이터의 구조와 역할/기능을 하나의 캡슐형태로 구현하는 방법이다.
기존 상위 클래스에 기능을 가져와 재사용할 수 있으면서 동시에 새로운 하위 클래스에 새로운 기능도 추가함으로써 재사용성을 높이고, 코드의 중복을 낮출 수 있다.(상속 한 Class: 부모 Class / 상속 받은 Class: 자식 Class)
한 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 여러 형태(객체)로 재구성 되는 것을 의미한다. 그 예시로는 Overloading, Overriding이 있다.