작성되어있지 않은 구현부는 자식클래스에서 오버라이딩하여 사용 ⇒ 상속받는 클래스에서 다형성을 실현하도록 하기 위함
1-2. 추상클래스
추상메서드를 하나 이상 포함한 클래스 → UPCASTING 용으로 사용됨 ⇒ 추상메서드가 있으면 반드시 선언, 추상메서드가 없어도 추상클래스로 선언 가능
추상클래스는 동작이 정의되지 않은 미완성형이므로 객체 생성 불가 ⇒ super() 메소드를 이용해 추상 클래스 생성자 호출 가능 ⇒ 상속을 통해 자식클래스를 만들고 자식클래스에서 추상메소드를 오버라이딩해야 객체 생성 가능 ⇒ 추상클래스를 상속받고 추상메서드를 오버라이딩하지 않으면 해당 클래스도 추상클래스가 됨
선언시 Class 와 메서드 앞에 abstract 키워드 기재
구현할 메서드를 명료하게 알려주는 인터페이스 역할 (& 구조적인 프로그램 설계)
2. 추상 클래스의 활용
2-1. 공통 멤버의 통합으로 중복 제거
상속(extends) 기능을 이용해 자식 클래스들을 대표할 수 있는 부모 추상 클래스로 묶음 → 코드의 중복 제거, 코드 재사용성, 유지보수 유리 (상위 클래스의 특징을 하위클래스에서 그대로 물려 받아 사용)
2-2. 규격에 맞는 설계 구현
추상클래스를 상속받아서 미리 정의된 공통 기능 구현
실체클래스에서 필요한 기능들을 클래스별로 확장
미리 규격에 맞게 소스가 구현되어 있기 때문에 해당 규격에 대한 구현부만 수정하면 손 쉽게 기능 수정 가능