객체지향과 절차지향

상속과 오버라이딩

객체지향 프로그래밍

부품에 해당하는 객체들을 먼저 만들고 이것들을 하나씩 **조립해서 완성된 프로그램**을 만드는 기법

객체지향 프로그래밍의 특징

캡슐화

객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것

외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드 메소드만 이용

캡슐화된 멤버를 노출시킬 것인지 숨길 것인지를 결정하기 위해 접근 제어자 사용

상속

**상위 객체의 필드와 메소드**→ 하위 객체가 사용할 수 있도록 해줌

상속은 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고,

이미 잘 개발된 **객체를 재사용**해서 새로운 객체를 만들기 때문에 반복된 코드의 중복을 줄임

다형성

같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질

오버로딩, 오바라이딩을 사용해서 이름이나 타입이 같아도 다양한 객체로 리턴이 가능하다

추상화

**공통의 속성이나 기능을 묶어 이름**을 붙이는 것

ex)) 사자나 호랑이 같은 걸 하나로 묶으려 할 때 동물 또는 생물이라고 묶는 것을 추상화라고함