- 여러가지 형태를 가질 수 있는 능력 - 조상타입 참조변수로 자손 타입 객체를 다루는 것 - 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다
class Tv{
boolean power;
int channel;
void power(){power =! power;}
void channelUp(){++channel;}
void channelDown(){--channel;}
}
class SmartTv extends Tv{
String text; //자막
void caption(){}
}
public class Main {
public static void main(String[] args) {
SmartTv s1 = new SmartTv(); // 1) 참조변수와 인스턴스의 타입이 일치
Tv tv = new SmartTv(); // 2) 조상타입 참조변수로 자손타입 인스턴스 참조
SmartTv s2 = new Tv(); // 3) 자손타입의 참조변수로 조상타입의 객체를 가리킬 수 없다
// (자손의 클래스 멤버가 개수가 조상 클래스 멤버 개수 보다 많기 때문)
}
}
1) 참조변수와 인스턴스의 타입이 일치 2) 조상타입 참조변수로 자손타입 인스턴스 참조
3) 자손타입의 참조변수로 조상타입의 객체를 가리킬 수 없다 자손 클래스멤버에 없는 것을 호출하면 에러 발생