❗ 다형성

 

- 여러가지 형태를 가질 수 있는 능력

- 조상 타입 참조 변수로 자손 타입 객체를 다루는 것

           원래                                                            다형성
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

+ Recent posts