객체의 공통적인 특성을 추출하여 인터페이스나 추상 클래스로 정의하는 것
추상 메서드를 공통적으로 가지고 있으며, 객체의 복잡한 내부 구현을 숨시고 객체 간의 관계를 단순화 할 수 있음
상속, 다형성, 캡슣화와 함께 사용하여 코드 유지 보수성과 가독성 제공
abstract class
- 하나 이상의 추상 메소드를 포함하는 클래스
- 오직 상속을 통해서만 하위 클래스에서 완성될 수 있다. 독립적으로 인스턴스 생성이 불가능
- 일반 메소드를 선언하여, 하위 클래스에서 공통적으로 사용 가능
- 추상 메소드를 선언하여, 하위 클래스에서 필수적으로 해당 메소드를 구현 하도록 강제 가능
interface
- 일반 메소드와 멤버 변수를 가질 수 없음
- abstract class와 다르게 다중 상속이 가능함
abstact class 와 interface의 차이
- abstract의 경우 단일 상속만 가능하고, interface의 경우 다중 상속이 가능하다
- abstract의 경우 일반 메소드/멤버 변수를 구현하여, 하위 클래스에서 재구현 없이 공통 사용가능
interface의 경우에는 불가능