※ 실제 프로그램이 동작하는 방식이 다른 게 아니라 코드를 어떻게 작성 하느냐 에 대한 개념적인 차이
생산성 향상
잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상시킬 수 있다.
코드 재사용성 가능
상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있다.
유지보수의 우수성
프로그램 수정시 추가, 수정을 하더라도 캡슐화를 통해 주변 영향이 적기때문에 유지보수가 쉬워서 매우 경제적이라할 수 있다.
실세계에 대한 쉬운 모델링
우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현할 수 있다.
개발속도가 느린점
객체가 처리하려는 것에 대한 정확한 이해가 필요하기에 설계단계부터 많은 시간이 소모 된다.
실행속도가 느린점
객체지향언어는 대체적으로 실행속도가 느리다.
캡슐화(Encapsulation)
데이터와 코드의 형태를 외부로부터 알 수없게 하고, 데이터의 구조와 역할, 기능을 하나의 캡슐형태로 만드는 방법
상속(Inheritance)
상위 클래스의 모든걸 하위 클래스가 모두 이어 받는것 즉, 부모가 자식에게 유전자를 물려주듯이 부모의 특징을 자식에게 모두 물려줌
다형성(Polymorphism)
상속과 연관이 있는 개념으로 한 객체가 다른 여러형태(객체)로 재구성 되는 것
자바의 오버로드(Overload) 또는 오버라이드(Override)이 다형성의 대표적인 예라 할 수있고, 이 것을 구현하는걸 오버로딩(Overloading)과 오버라이딩(Overriding) 이라고 한다.
추상화(abstraction)
추상화는 객체의 공통적인 속성과 기능을 추출하여 정의하는것