다형성
: 여러가지 형태를 가질 수 있는 능력
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 ; 다형성의 정의
- 자손 타입의 참조변수로는 조상 타입의 객체를 가리킬 수 없음.
-> 조상객체의 타입일 뿐, 실제 가리키는 객체는 자손!
일반적으로
참조변수타입 변수 = new 객체(인스턴스)타입
조상타입 변수 = new 자손타입();
// 타입 불일치해도 가능
SmartTv s = new SmartTv();
// 참조변수와 인스턴스 타입 일치
-> SmartTv의 모든 멤버를 사용할 수 있음Tv t = new SmartTv();
-> SmartTv의 모든 멤버 사용X, 조상인 Tv가 가지고 있는 멤버들만 사용할 수 있음
주의사항
- 자손타입의 참조변수로 조상 타입의 객체를 가리킬 순 없다.
- 실제 조상이 가지고 있는 멤버보다 자손의 멤버가 더 많기때문에, 자손의 멤버를 호출해도 해당하는 조상의 멤버가 없으면 동작을 못함.
(리모콘 버튼이 많은데, 해당 버튼들에 기능이 없는 것
- 참조변수의 타입은 인스턴스의 타입과 반드시 일치해야 하나?
- 일치하는 것이 보통이지만, 일치하지 않을 수도 있다.
- 참조변수가 조상타입일 대와 자손타입일 때의 차이?
- 참조변수로 사용할 수 있는 멤버의 갯수가 달라짐
출처
- 자바의 정석 기초편 youtube - ch 7-23 다형성