객체지향에서 다형성이 가장 중요하다
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(); ------- 불가능
기본적인 차이에 대해서 이해하기
참조변수가 조상타입일 때와 자손타입일때의 차이
> 참조변수로 사용할 수 있는 멤버의 개수가 달라진다.
자손 타입의 참조변수로 조상의 타입의 객체를 가리킬 수 있나요/?
'자바의정석' 카테고리의 다른 글
[자바의 정석 - 기초편] ch7-24,25 참조변수의형변환(2) (0) | 2022.03.21 |
---|---|
[자바의 정석 - 기초편] ch7-24,25 참조변수의 형변환(1) (0) | 2022.03.20 |
[자바의 정석 - 기초편] ch7-22 캡슐화 (0) | 2022.03.20 |
[자바의 정석 - 기초편] ch7-21 접근제어자 (0) | 2022.03.20 |
[자바의정석 - 기초편 ] ch7-17~20 제어자, static, final, abstract (0) | 2022.03.19 |