다형성 (Polymorphism)

0

다형성

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

  • 조상 타입 참조 변수로 자손 타입 객체를 다루는 것 ; 다형성의 정의
  • 자손 타입의 참조변수로는 조상 타입의 객체를 가리킬 수 없음.
    -> 조상객체의 타입일 뿐, 실제 가리키는 객체는 자손!

일반적으로
참조변수타입 변수 = new 객체(인스턴스)타입
조상타입 변수 = new 자손타입(); // 타입 불일치해도 가능

  • SmartTv s = new SmartTv(); // 참조변수와 인스턴스 타입 일치
    -> SmartTv의 모든 멤버를 사용할 수 있음
  • Tv t = new SmartTv();
    -> SmartTv의 모든 멤버 사용X, 조상인 Tv가 가지고 있는 멤버들만 사용할 수 있음

주의사항

  • 자손타입의 참조변수로 조상 타입의 객체를 가리킬 순 없다.
    • 실제 조상이 가지고 있는 멤버보다 자손의 멤버가 더 많기때문에, 자손의 멤버를 호출해도 해당하는 조상의 멤버가 없으면 동작을 못함.
      (리모콘 버튼이 많은데, 해당 버튼들에 기능이 없는 것

  • 참조변수의 타입은 인스턴스의 타입과 반드시 일치해야 하나?
    • 일치하는 것이 보통이지만, 일치하지 않을 수도 있다.

  • 참조변수가 조상타입일 대와 자손타입일 때의 차이?
    • 참조변수로 사용할 수 있는 멤버의 갯수가 달라짐

출처

  • 자바의 정석 기초편 youtube - ch 7-23 다형성
profile
백엔드를 공부하고 있습니다.

0개의 댓글