다형성(polymorphism)

김설영·2022년 3월 29일
0
post-thumbnail
  • 여러가지 형태를 가질 수 있는 능력
  • 조상 타입 참조 변수로, 자손 타입 객체를 다루는 것
class Tv {
	// 5개 멤버
}

class SmartTv extends Tv {
	// 7개 멤버
}

// 근본 (타입 일치)
Tv t = new Tv();
SmartTv s = new SmartTv();

// 다형성 (조상 타입의 참조 변수로, 자손 타입의 객체를 다룬다)
Tv t = new SmartTv();	// 타입 불일치 > 장점이 뭘까?
  • 다형성이 객체지향에 굉장한 유연함을 준다!

  • 객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이는?
    SmartTv s = new SmartTv(); // 멤버 전부 사용 (7개)
    Tv t = new SmartTv(); // 멤버를 일부만 사용 (5개)

    • 둘 다 SmartTv 인스턴스가 생성되나, 사용 가능한 멤버 수에 차이가 있다.
  • 자손 타입의 참조변수로는 조상 타입의 객체를 가리킬 수 없다.
    Tv t = new SmartTv(); // OK 허용
    SmartTv s = new Tv(); // ERROR 허용 안됨

    • 인스턴스가 가진 멤버 갯수 중, 일부만 사용하는 것은 허용이 된다.
    • 인스턴스가 가진 멤버 갯수보다, 참조변수 클래스의 기능이 더 많은 경우는 허용되지 않는다. 없는 것을 호출해서 에러가 날 수도 있기때문.
profile
블로그 이동하였습니당! -> https://kimsy8979.tistory.com/

0개의 댓글