지난 시간에 객체지향 프로그래밍(OOP)에 대해 포스팅을 했었습니다. 객체 지향의 특징 중 추상화(Abstraction)에 대해는 간단한 정의만 하고 넘어갔었습니다. 그 이유는 추상 클래스와 인터페이스를 같은 것이라고 생각을 하시는 분이 많은데, 사용용도 면에서 큰 차이가 있어서 좀 더 정확하게 비교해가며 이번 포스팅을 하려 합니다. 사실 추상 클래스와 인터페이스의 구분은 면접 단골 질문이기도 합니다. 이론적으로는 누구나 외우기만 하면 대답할 수 있습니다. 하지만 그런 이론적인 내용 말고 정작 "언제 인터페이스를 사용하는 게 좋을까요?", "추상 클래스를 사용하면 안 되나요?"라는 실무적인 질문이 들어오면 대답하는 것이 생각보다 어려울 것 같습니다. 저도 마찬가지이고, 그렇기에 공부하면서 포스팅을 진행 ..