추상화 = 공통된 속성이나 기능을 묶어서 이름을 붙이는 것!

추상화는 '데이터 추상화'와 '제어 추상화'로 분류될 수 있다.
데이터 추상화란, 대상을 간단한 개념으로 일반화 하는 것을 뜻한다.
예를들어 강아지, 고양이, 원숭이라는 객체가 있을 때, 객체들 간의 공통 특징인 '동물'로 묶어 이름을 붙이는 것을 데이터 추상화라고 할 수 있다.
제어 추상화는 특정 클래스의 메소드를 사용하는 사용자에게 해당 메소드의 작동방식과 같은 내부 로직을 숨기는 것을 뜻한다.
예를들어 특정 국가명을 입력하면 각 나라의 달력을 리턴해주는 함수가 있을 때 사용자는 함수의 내부가 어떻게 설계되었는지는 알 필요 없이 해당 국가의 달력에 해당하는 반환값만 받으면 된다.
추상화를 사용하여 프로그램을 설계한다면 코드의 생산성과 가독성이 증가하여 에러가 줄어들고 유지 보수시 시간이 단축되는 효과를 얻을 수 있다.