❗ 다형성
- 여러가지 형태를 가질 수 있는 능력
- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것
원래 다형성
Tv t = new Tv( ); => Tv t = new SmartTv( ); // 타입불일치, 조상타입 참조변수로
SmartTv s = new SmartTv( ); 자손타입객체를 다룰 수 있는 것
- 객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이?
SmartTv s = new SmartTv( ); // 참조변수와 인스턴스의 타입이 일치
Tv t = new SmartTv( ); // 조상 타입 참조변수로 자손 타입 인스턴스 참조
✔예시)
SmartTv s = new SmartTv( ); Tv t = new SmartTv( );
↳ 스마트 티비 리모컨(버튼 7개) = 7개 기능 사용가능 ↳ 티비 리모컨(버튼5개) = 7개 기능 가지고 있어도 5개 기능 만 사용가능
- 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
Tv t = new SmartTv( ); // OK. 허용
SmartTv s = new Tv( ); // 에러. 허용 안 됨
✔예시)
Tv t = new SmartTv( ); SmartTv s = new Tv( );
조상(기능 5개) 자손 (기능 7개) 자손(기능 7개) 조상(기능 5개)
↳ 있는 기능을 안 쓰는 건 괜찮음 ( 5 < 7) ↳ 실제가지고 있는 멤버개수보다 리모컨 버튼이 많으면 안됨 (7 >5)
'자바의 정석 > 객체지향' 카테고리의 다른 글
[객체지향] 제어자 (0) | 2022.12.11 |
---|---|
[객체지향] 오버라이딩(overriding) (1) | 2022.12.09 |
[객체지향] 단일상속, Object클래스 (0) | 2022.12.06 |
[객체지향] 포함관계 (0) | 2022.12.06 |
[객체지향] 상속 (0) | 2022.12.05 |