객체의 공통적인 특성을 추출하여 인터페이스나 추상 클래스로 정의하는 것

추상 메서드를 공통적으로 가지고 있으며, 객체의 복잡한 내부 구현을 숨시고 객체 간의 관계를 단순화 할 수 있음

상속, 다형성, 캡슣화와 함께 사용하여 코드 유지 보수성과 가독성 제공

abstract class

interface

abstact class 와 interface의 차이