기본적인 상속과 추상클래스의 내용은 c++과 동일해서 간단히 정리할 부분만 정리하였다.
is - a : 상속
has - a : 합성(aggregation)
super() : 상위 클래스를 나타냄
Upcasting 예시
Parent parent = new Child();
Downcasting 예시
((Child)parent).childMethod();
Java는 모든 method가 virtual method이다. 따라서 upcasting을 통한 다형성을 알아놓는 것이 중요하다.
추상클래스는 new (인스턴스화)할 수 없다.
추상클래스는 추상 메서드를 포함하는 클래스이므로 선언만하고 실제 구현은 이를 상속받은 클래스에서 진행한다.
템플릿 메서드는 추상 메서드나 이미 구현된 메서드를 사용해서 전체 기능의 흐름을 정의하는 메서드로 'final'로 선언하여 하위 클래스에서 재정의할 수 없게 한다.
public final void run() {
start();
going();
stop();
}
final keyword로 하위 클래스에서 재정의할 수 없게 하는 이유는 run() 메서드의 시나리오가 변하면 안되기 때문이다.