부품에 해당하는 객체들을 먼저 만들고
이것들을 하나씩 **조립해서 완성된 프로그램
**을 만드는 기법
객체의 필드, 메소드를 하나로 묶고 실제 구현 내용을 감추는 것
외부 객체는 객체 내부의 구조를 알지 못하며 객체가 노출해서 제공하는 필드 메소드만 이용
캡슐화된 멤버를 노출시킬 것인지 숨길 것인지를 결정하기 위해 접근 제어자 사용
**상위 객체의 필드와 메소드
**→ 하위 객체가 사용할 수 있도록 해줌
상속은 상위 객체를 재사용해서 하위 객체를 쉽고 빨리 설계할 수 있도록 도와주고,
이미 잘 개발된 **객체를 재사용
**해서 새로운 객체를 만들기 때문에 반복된 코드의 중복을 줄임
같은 타입이지만 실행 결과가 다양한 객체를 이용할 수 있는 성질
오버로딩, 오바라이딩을 사용해서 이름이나 타입이 같아도 다양한 객체로 리턴이 가능하다
**공통의 속성이나 기능을 묶어 이름
**을 붙이는 것
ex)) 사자나 호랑이 같은 걸 하나로 묶으려 할 때 동물 또는 생물이라고 묶는 것을 추상화라고함