프로그래밍에서의 추상화는 복잡한 데이터, 구조, 시스템 등으로부터 핵심만을 가려내 덜 자세하게 만드는 것 또는 세부사항, 절차 등을 감추고 인터페이스 등을 만드는 것으로 복잡도를 낮추는 방법이다.
크게 데이터, 프로세스 2가지로 나뉜다.
어떤한 데이터들의 공통점을 모으로 차이점은 버린다.
ex) 고양이
, 강아지
, 원숭이
등의 객체들의 공통적인 특징을 묶어 동물
이라는 카테고리로 카테고리화 한다.
어떠한 내부 프로세스를 숨기는 것을 말한다. 예를 들어 DB에 어떻게 데이터를 저장하는지는 모르지만 단순하게 insert, update 들의 쿼리로 데이터를 저장할 수 있다.
ex1)
abstract class Animal {
public abstract void animalSound();
public void sleep() {
System.out.println("zzz");
}
}
class Pig extends Animal {
public void animalSound() {
System.out.println("꿀꿀꿀~");
}
}
class Dog extends Animal {
public void animalSound() {
System.out.println("왈왈~");
}
}
public class Main {
public static void main(String[] args) {
Pig a = new Pig();
a.animalSound();
a.sleep();
Dog b = new Dog();
b.animalSound();
b.sleep();
}
}
ex2)
코드 뿐 아니라 실제 시스템에서도 추상화는 이뤄져있다. 대표적인 예로 DB시스템이 있다. 데이터베이스 내의 내부프로세스와는 상관없이 쿼리를 통해 접근할 수 있다.