ch7-23 다형성
⭐ 조상 타입 참조 변수로 자손 객체 타입 객체를 다루는 것 -> 외우기
Tv클래스를 상속받는 자식 SmartTv를 만든다. SmartTv의 멤버는 상속 받은 5개 + 자신의 것 2개 해서 총 7개의 멤버를 갖고 있다. 객체를 생성할 때 지금까지는 타입을 일치시켜 객체를 생성했다. 하지만 다형성에서는 타입이 불일치할 수 있다. 즉 조상 타입 참조 변수로 자손 객체를 생성할 수 있다.
참조변수와 객체의 타입이 일치할 때와 일치하지 않을 때의 차이는 뭘까?
왼쪽 그림은 참조변수의 멤버가 7개이고, SmartTv 멤버도 7개이므로 모든 객체를 사용할 수 있다. 오른쪽 그림은 참조변수가 Tv로 멤버가 5개이고, SmartTv 멤버가 7개 이어도 쓸 수 있는 건 5개이다. 조상 타입 참조 변수로 자손 타입 인스턴스를 사용하면, 아무리 멤버가 많다 하더라도 참조변수에 정의되어 있는 5개의 멤버만 사용할 수 있다.
자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
조상 타입 참조 변수로 자손 타입 인스턴스를 사용하면 참조변수에 정의되어 있는 5개의 멤버만 사용할 수 있다. 즉 자손 인스턴스 멤버가 7개의 기능을 전부 쓸 수 없는 것은 가능하다. 하지만 자손 타입 참조변수로 조상 인스턴스를 호출하게 되면 없는 caption을 호출하게 되므로 오류가 발생한다.
사용할 수 있는 멤버가 많은데 사용하지 못하는 것과 없는 멤버를 사용하려 하는 것은 전혀 다르다.
⭐⭐⭐ 자손 참조변수로 조상 인스턴스 호출하면 절대 안됨.
'자바 > 자바의 정석 Ch.7 객체지향 프로그래밍 II' 카테고리의 다른 글
ch7-24,25 참조변수의형변환(2) (0) | 2023.04.19 |
---|---|
ch7-24,25 참조변수의형변환(1) (0) | 2023.04.19 |
ch7-22 캡슐화 (0) | 2023.04.18 |
ch7-21 접근제어자 (0) | 2023.04.18 |
ch7-17~20 제어자, static, final, abstract (0) | 2023.04.17 |