반응형
다형성이란
조상 타입 참조 변수로 자손 타입 객체를 다루는 것
* 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
있는 기능을 안 쓰는 건 괜찮은데, 실제 가지고 있는 기능보다 버튼이 더 많으면 안된다.
ex) 리모콘에 버튼 있는데 실제 작동 안하면 난리난다는 상황을 생각해보면 된다.
Tv t = new SmartTv();
SmartTv s = new Tv(); // 에러
객체와 참조변수의 타입이 일치할 때, 일치하지 않을 때 차이
class Tv {
boolean power;
int channel;
void power() { power = !power; }
void channelUp() { ++ channel; }
void channelDown() { -- channel; }
}
class SmartTv extends Tv {
String text;
void caption() { ... }
}
SmartTv s = new SmartTv();
Tv t = new SmartTv();
SmartTv s 에는 버튼이 7 개, 기능도 7개 (power, channel, power(), channelUp(), channelDown(), text, caption())
Tv t 에는 버튼이 5개, 기능이 7개 (power, channel, power(), channelUp(), channelDown())
즉, t 에서는 실제 쓸 수 있는 기능이 7개 여도 버튼이 5개 밖에 없으니 기능 5개밖에 못 쓴다.
참고자료
자바의 정석
자바의 정석 - 기초편 다형성 강의
https://www.youtube.com/watch?v=fw7Nm_li0pE&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=80
반응형