클래스 상속
이미 구현된 클래스를 상속 -> 속성이나 기능을 확장하여 클래스를 구현
class ChildClass extends ParentClass {
}
CustomerTest
Customer class / VipCustomer class
하위 클래스를 생성하면 상위 클래스가 먼저 생성 됨
ex) new VipCustomer() -> Customer() 먼저 호출
super 키워드
super()는 상위 클래스의 기본 생성자를 호출
형 변환(업캐스팅)
상위 클래스로 변수를 선언, 하위 클래스의 생성자로 인스턴스를 생성
-> 상위클래스 타입에 있는 것만 접근 가능함
오버라이딩(overriding) - 상위클래스에서 정의된 내용을 하위클래스에서 재정의할 수 있음
@Override
public int calcPrice(int price) {
return ~
}
overriding 어노테이션(annotation)
다형성(polymorphism)
IS-A 관계
HAS-A 관계
다운 캐스팅(Downcasting)
업캐스팅된 클래스 -> 원래 타입으로 형 변환
하위클래스로의 형 변환은 명시적으로 해야함!
Customer vc = new VIPCustomer();
VIPCustomer vCustomer = (VIPCustomer)vc;
instanceof
참조변수가 참조하고 있는 인스턴스의 실제 타입인지 T/F
추상 클래스(abstract class)
메서드의 선언만 있는 추상 메서드(abstract method)를 포함한 클래스
템플릿 메서드
상위 클래스에서 템플릿 메서드를 활용하여 전체적인 흐름을 정의
하위 클래스에서 다르게 구현되어야 할 부분 -> 추상 메서드로 선언, 하위 클래스에서 구현
Car Class
ManualCar / AICar
CarTest
인터페이스
하나의 클래스가 여러 인터페이스 구현 가능
디폴트 메서드가 중복 되는 경우 -> 구현하는 클래스에서 재정의
인터페이스 간에도 상속이 가능
클래스 상속 + 인터페이스 사용
class A extends ClassB implements InterfaceC
BookShelf