본문 바로가기

Java

타입변환. 다형성

다형성이란??

같은 타입이지만 실행결과가 다양한 객체를 이용할 수 있는 성질.

하나의 성질에 다양한 객체를 대입함으로서 다양한 기능을 이용할수 있게 해준다. 

이때 사용하는 것이 부모클래스로의 타입변환이다. 부모타입에 모든 자식객체가 대입가능한것

이것을 이용해 객체의 부품화/모듈화가 가능하다. 

- 이 설명만으로는 알기 어렵다. 하지만 다형성, 모듈화는 자바에서 중요한 부분이므로 잘 이해하자.


예를 들어보자 자동차를 설계 할 때에 타이어 클래스를 적용했다고 하자. 

타이어 클래스를 상속받고있는 자식 타이어 클래스는 어떤 것이든 자동차에 대입할수있다.  

조금더 자세히 하자면 처음 자동차에 부모 타이어 a1 ,a2, a3, a4 가 장착되있다.

부모타이어는 자동차에 맞는 규격이 있을것이다. 그리고 각 타이어 객체는 성능도 다를 것이다. 

이때 부모 타이어 클래스를 상속받아 이 자동차에 장착될수있는 자식 클래스가 있다면 a1~a4중 어떤 타이어든 

대신해서 장착할수있다는것.

항상 책에서 레고나 자동차를 예로들어 설명해도 잘 몰랐는데 이번에야 조금 갈피를 잡은 느낌이다.

위의 예를 코드로 만들면

public class Car{

Tire t1 = new HankookTire();

Tire t2 = new kumhoTire();

}

부모 클래스 타입인 Tire타입에 자식 클래스의 객체인 HankookTire/KumhoTire를 대입한다. 

원래 우리가 아는 모양으로 만들어보자

public class Car{

HankookTire hk = new HankookTire();

KumhoTire kh = new KumhoTire();

Tire t1 = hk;

Tire t2 = kh;

}

이런식이다. 이게 위의 코드와 같이 사용된다.  이때 HankookTire/KumhoTire 자식 클래스는 Tire클래스를 상속받고있어야한다.  

전에 자동 형반환이란것을 배웠다. 간단히 말하면 낮은 값의 데이터 타입이 높은 데이터 타입과 함께 연산될때 

 높은데이터 타입으로 자동으로 맞춰지는 것이였다.

이떄도 비슷하다 클래스 타입의 변환은 상속관계의 클래스타입에서 이룽지고 자식타입은 부모타입으로 자동타입변환이 이루어진다. 


'Java' 카테고리의 다른 글

자동타입변환2 필드의 당형성  (0) 2018.12.21
자동타입변환(Promotion)  (0) 2018.12.20
메소드 재정의(Override)와 몇가지..  (0) 2018.12.12
상속이란?  (0) 2018.12.05
접근 제한자 ,Getter/Setter  (0) 2018.11.22