실체 클래스를 위한 설계 규격
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 인터페이스, ... { }