다형성
- 사용 방법은 동일하지만 다양한 객체 활용해 여러 실행결과가 나오도록 하는 성질
- 메소드 재정의와 타입 변환으로 구현
자동 타입 변환 (promotion)
- 프로그램 실행 도중 자동으로 타입 변환 일어나는 것
ex) Cat cat = new Cat(); Animal animal = cat;
ex) Animal animal = new Cat();
- 부모 타입으로 자동 타입 변환 이후에는 부모 클래스에 선언된 필드 및 메소드만 접근 가능
- 예외적으로, 메소드가 자식 클래스에서 재정의될 경우 자식 클래스의 메소드가 대신 호출
강제 타입 변환 (casting)
- 부모 타입을 자식 타입으로 변환
- 조건: 자식 타입이 부모 타입으로 자동 타입 변환한 후 다시 반대로 변환할 때 사용
자식타입 변수 = (자식타입) 부모타입;
Child child = (Child) parent;
instanceof 연산자
- 어떤 객체가 어느 클래스의 인스턴스인지 확인
- 메소드 내 강제 타입 변환 필요한 경우
- 타입 확인하지 않고 강제 타입 변환 시도 시 ClassCastException 발생할 수 있음
- instanceof 연산자 통해 확인 후 안전하게 실행
ex) if(parent instanceof Child) {
}
혼자 공부하는 자바<한빛 미디어> 신용권 지음