데이터와 기능을 하나로 묶은 그룹
객체를 만들고 조작하며 객체끼리 관계를 맺음으로써 수의 객체가 함께 수행될 수 있게하는 것
상속을 통해 프로그래밍시 코드 재사용을 높임
잘 설계된 클래스 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상
우리 일상생활의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현 가능
프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기 때문에 유지보수가 쉬워서 매우 경제적
객체가 처리하는 것에 대한 정확한 이해가 필요하기에 설계 단계부터 많은 시간이 소모
객체지향언어는 대체적으로 실행속도가 느림
다중 상속이 지원되는 언어의 경우 코딩 난이도가 상승