여러 가지 형태를 가질 수 있는 능력
조상 타입 참조 변수로 자손 타입 객체를 다루는 것
📌객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이?
자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다(예를들어 리모컨이 버튼이 7개인데 5개만 되고, 2개 기능을 하지 못하는 상태는 있을 수 없다)
class Tv{
boolean power;
int channel;
void power(){power=!power;}
void channelUp(){++channel;}
void channelDown(){--channel;}
}
class SmartTv extends Tv{
String text; //caption 자막을 보여주기 위한 문자열
void caption() {/*내용생략*/}
}
//원래 객체를 생성하려면 타입이 일치해야했다
Tv t = new Tv();
SmartTv s = new SmartTv();
//하지만 타입이 불일치 해도 가능한 경우가 있다(다형성 - 타입 불일치)
Tv t = new SmartTv();
📚 참조변수의 타입은 인스턴스의 타입과 반드시 일치해야 하나❓
📚 참조변수가 조상타입일 때와 자손타입일 때의 차이는❓
📚 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 있나❓