JAVA
[자바의 정석 기초편 chapter7] 다형성(polymorphism)
zoozoo2
2022. 12. 9. 02:23
다형성이란?
여러가지 형태를 가질 수 있는 능력
-> 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
class Tv{
boolean power;
int channel;
void power(){
power =! power;
}
void channelUp(){
++channel;
}
void channelDown(){
--channel;
}
}
class SmartTv extends Tv{
String text;
void caption(){}
}
Tv class는 조상 SmartTv class는 Tv class를 상속 받았고, 자손이 됨
우리가 지금까지 배운것은 인스턴스 타입과 일치하는 타입의 참조변수만을 사용함
Tv t = new Tv();
SmartTv s = new SmartTv();
이제 다형성을 배웠자나
Tv t = new SmartTv();
이렇게 타입이 불일치하지만 서로 상속관계에 있을 경우!
조상 타입의 참조변수로 자손 인스턴스를 참조하는게 가능하단걸 알게된거야 추카추카~~!@!@@
SmartTv s = new Tv(); //이건 안됨~~
자손타입의 참조변수로 조상타입의 인스턴스 참조는 안된다!!!!!!!!
으디 감히 자손이 부모를 조종하려고 ! (꼰대)
사실 안되는 이유는 자손 타임의 멤버 개수가 조상보다 많을 수 있어서 그럼
자손 타입에서 무언가 바꿨는데 그게 조상에 없으면 에러임~~
**Q&A**
Q) 참조변수 타입은 인스턴스 타입과 반드시 일치해야 하나요?
A) 놉. 일치하는 것이 보통이지만 일치하지 않을 수 있습니다.
Q) 참조변수가 조상타입일때와 자손타입일때의 차이는?
A) 참조변수로 사용할 수 있는 멤버의 갯수가 달라져요
Q) 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 있나요?
A) 놉.