다형성

- 사용 방법은 동일하지만 다양한 객체 활용해 여러 실행결과가 나오도록 하는 성질

- 메소드 재정의와 타입 변환으로 구현

 

자동 타입 변환 (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) {

    

     }

 

 

혼자 공부하는 자바<한빛 미디어> 신용권 지음

'Java' 카테고리의 다른 글

인터페이스  (0) 2021.01.11
추상 클래스  (0) 2021.01.11
상속  (0) 2021.01.11
클래스 문제  (0) 2021.01.11
클래스(접근 제한자)  (0) 2021.01.11

+ Recent posts