자바의정석

[자바의 정석 - 기초편] ch7-23 다형성

유호야 2022. 3. 20. 18:05
반응형

객체지향에서 다형성이 가장 중요하다

ch7-23 다형성(polymorphism)

- 여러 가지 형태를 가질 수 있는 능력
- 조상 타입 참조변수로 자손 타입 객체를 다루는 것 

추상클래스나 인터페이스를 이해하기 위해서 여러번 반복하며,
6장부터 7장 다형성까지 계속 이해해야 한다. 

여러가지 형태를 가질 수 있다는 것이 다형성 

원래는 일치해야 하지만, 타입이 불일치하는 것도 괜찮다는 것
Tv와 SmartTv 
스마트 티비를 티비 리모컨으로 다루는 것 

즉 조상타입의 참조변수로 자손 타입 객체를 다루는 것

불일치할 때의 장점
2가지의 장점 때문에 이용한다. 


참조변수 타입과 객체가 일반적으로 일치해야 하지만, 불일치할 때의 차이와 장점은?

객체는 SmartTv 
smartTv의 

smartTv 리모컨으로는 7개의 기능을 사용할 수 있다. 
그런데 2번의 경우 리모컨이 TV 리모컨인 경우에 

TV리모컨에만 있는 5개의 버튼만 사용할 수 있다. 
일부만 사용할 수 있다.

다형성이 장점이 있다면서, 기능을 덜 쓸 수 있다는 것이 장점인가?
그렇다. 조상으로서 기능의 제약이 있는 것이 장점이 될 수 있다. 


자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다. 

자손타입의 객체를 조상 타입의 객체를 가리킬 수 있지만, 
조상타입의 객체를 자손 타입에는 불가능하다. 

간단하게 생각해보자면, 조상의 적은 기능(5개)을 가지고 
자손의 더 많은 기능을 사용하는 것이 불가능하기 때문에


즉 

조상타입 Tv
자손타입 SmartTv 

Tv tv = new SmartTv();             ------ 가능
SmartTv smartTv = new Tv();     ------- 불가능 

 

기본적인 차이에 대해서 이해하기 



참조변수가 조상타입일 때와 자손타입일때의 차이 
> 참조변수로 사용할 수 있는 멤버의 개수가 달라진다.  

자손 타입의 참조변수로 조상의 타입의 객체를 가리킬 수 있나요/?

반응형