실체 클래스를 위한 설계 규격
extends)를 위한 용도로만 사용클래스 선언에 abstract 키워드
public abstract class 클래스명 {
// 필드
// 생성자
// 메서드 (ex/ public abstract void hello();)
}
추상 클래스의 상속
extends 키워드 사용
추상 클래스를 상속받는 클래스는 반드시 추상 클래스 내의 추상 메서드를 구현해야 함
❗ Override가 필수적이기에 특정 기능의 구현을 강요하는 측면도 있음
활용
여러 클래스들이 상당수 공통점을 가지고 있으나 부분적으로 그 처리방식이 다른경우
부모 클래스를 추상 클래스로 정의하여 자식 클래스들이 각각 메서드를 구현
클래스 구조상 관계와 상관없이 클래스들에 의해 구현될 수 있는 "규약"
instanceof를 통해 특정 객체인지 확인 가능 public interface 인터페이스명 {
// 추상메소드 선언 (abstract 키워드를 지정하지 않아도 됨)
}
public class Point implements 인터페이스명 {
// 추상메소드 구현 (Ovrride)
}
implements public class Point implements Drawable, Resizeable, ... {
...
}
상속과 구현
추상클래스는 객체를 일반화한 공통 필드와 메서드의 정의에 집중 (종적 확장)
인터페이스는 자연스러운 상속 관계를 해치지 않으면서도 추가 내용을 규정 가능 (횡적 확장)
일반 클래스 vs 추상 클래스 vs 인터페이스
* 실체 메서드 (Concrete Method)
- 메서드의 구현을 포함한 일반적인 메서드
- 추상 메서드의 반대 개념
상속 + 구현
class 클래스명 extends 부모클래스 implements 인터페이스, ... { }