다형성 (polymorphism)
- 여러 가지 형태를 가질 수 있는 능력
- 조상 타입 참조변수로 자손 타입 객체를 다루는 것
class Tv {
~~
}
class SmartTv extends Tv {
String text;
}
Tv t = new Tv();
SmartTv s = new SmartTv();
Tv t = new SmartTv();
객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이?
SmartTv s = new SmartTv();
Tv t = new SmartTv();
SmartTv s = new SmartTv();
의 경우 SmartTv 타입에 해당되는 (본인2, Tv타입 5) 총 7개의 멤버변수 사용 가능
Tv t = new SmartTv();
의 경우 Tv 타입에 해당되는 5개의 멤버변수 사용가능
- 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
Tv t = new SmartTv();
SmartTv t = new Tv();
- Q. 참조변수의 타입은 인스턴스의 타입과 반드시 일치해야 하는지?
-> X, 일치하지 않을 수도 있음
- Q. 참조변수가 조상타입일 때와 자손타입일 때의 차이?
-> 참조변수로 사용할 수 있는 멤버변수의 개수가 달라짐
- Q. 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 있는지?
-> X