innn

다형성 본문

JAVA/자바의 정석 기초편_남궁성(2020)

다형성

33삼 2022. 7. 17. 11:17

다형성은 사용방법은 동일하지만 다양한 객체를 이용해서 다양한 실행결과가 나오도록 하는 성질이다.  예를 들어, 자동차가 타이어를 사용하는 방법은 동일하지만 어떤 타이어(한국 타이어, 금호 타이어 등)를 사용하느냐에 따라 주행 성능이 달라질 수 있다. 

 

다형성을 구현하려면 메소드 재정의와 타입변환이 필요하다.

메소드 재정의 + 타입 변환 => 다형성

 

자동 타입 변환

타입 변환이란 타입을 다른 타입으로 변환하는 행위를 말한다. 기본 타입의 변환과 마찬가지로 클래스도 타입 변환이 있다. 클래스의 변환은 상속 관계에 있는 클래스 사이에서 발생한다. 자식은 부모타입으로 자동 타입 변환이 가능하다.

 

자동 타입 변환은 프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것을 말한다. 자동 타입 변환은 다음과 같은 조건에서 일어난다.

 

부모타입 변수 = 자식타입;

(자동 타입 변환)

 

자동 타입 변환의 개념은 자식은 부모의 특징과 기능을 상속받기 때문에 부모와 동일하게 취급될 수 있다는 것이다. 예를 들어 고양이가 동물의 특징과 기능을 상속 받았다면, '고양이는 동물이다'가 성립한다.

Animal 클래스 (부모)

class Animal {
}

 ↑ 상속

Cat 클래스(자식)

class Cat extends Animal {
}

 

Cat 클래스로부터 Cat 객체를 생성하고 이를 Animal 변수에 대입하면, 자동 타입 변환이 일어난다. 

 

Cat cat = new Cat();

Animal animal = cat;                     <----- Animal animal = new Cat(); 도 가능

 

cat과 animal 변수는 타입만 다를 뿐, 동일한 Cat 객체를 참조한다.