모듈화된 객체, 상속을 통해 코드의 재사용성을 높일 수 있음
독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있음
현실에서 사용하는 개념을 기반으로 모델링이 되기 때문에 생각한대로 자연스럽게 모델링 가능
수정 및 추가 시에 캡슐화 등으로 코드 수정이 적기 때문에 유지보수가 용이함
절차지향 언어보다 상대적으로 실행속도가 느림
객체 단위로 프로그램을 개발하다보면 프로그램 용량이 커질 수 있음
클래스, 객체, 상속 등을 고려한 프로그래밍을 하려면 설계에 많은 시간을 투자해야 함
- 서로 연관있는 속성과 기능을 하나의 클래스로 만들어 분리하는 것
- 관련이 없는 외부에서는 해당 클래스로 제한적인 접근이 가능
- 부모 클래스 (물려주는)의 속성과 기능을 자식 클래스 (물려받는)가 가지게 되는 것
- A 클래스의 속성과 기능을 B 클래스에서도 사용할 수 있음
- 예: 라면 이라는 클래스가 있고, 이 클래스를 상속받는 국물 라면, 비빔 라면, 짜장 라면 클래스를 만들 수 있고, 라면 클래스의
기본 속성으로 조리 시간 이라는 속성을 만들었다면, 자식 클래스에서도 동일하게 조리 시간이라는 속성을 사용할 수 있음
- 각 클래스들의 공통적인 속성과 기능을 정의하여 코드의 중복을 줄이고, 클래스간 관계를 효과적으로 설정하는 것
- 추상 클래스와 인터페이스를 활용할 수 있음
두 개 이상의 메소드가 동일한 이름으로 구성될 수 있지만 수행되는 행위는 다를 수 있음 (Overriding, Overloading)