TIL | JAVA 다형성(polymorphism)

김윤희·2022년 8월 1일
0

다형성(polymorphism)

다형성이란?


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

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

    • 📌객체와 참조변수의 타입이 일치할 때와 일치하지 않을 때의 차이?

      • ✔ SmartTv를 SmartTv리모컨으로 다루게 될때 7가지 기능을 모두 사용할 수 있지만. SmartTv를 Tv 리모컨으로 다루게 될 때는 5가지 기능만 사용을 할 수 있다.
  • 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다(예를들어 리모컨이 버튼이 7개인데 5개만 되고, 2개 기능을 하지 못하는 상태는 있을 수 없다)

class Tv{
	boolean power;
    int channel;
    
    void power(){power=!power;}
    void channelUp(){++channel;}
    void channelDown(){--channel;}
}

class SmartTv extends Tv{
	String text;	//caption 자막을 보여주기 위한 문자열
    void caption() {/*내용생략*/}
}
//원래 객체를 생성하려면 타입이 일치해야했다
Tv t = new Tv();			
SmartTv s = new SmartTv();

//하지만 타입이 불일치 해도 가능한 경우가 있다(다형성 - 타입 불일치)
Tv t = new SmartTv();
  • 📚 참조변수의 타입은 인스턴스의 타입과 반드시 일치해야 하나❓

    • 아니다. 일치하는 것이 보통이지만 일치 하지 않을 수도 있다(ex)다형성)
  • 📚 참조변수가 조상타입일 때와 자손타입일 때의 차이는❓

    • 참조변수로 사용할 수 있는 멤버의 개수가 달라진다
  • 📚 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 있나❓

    • 아니다. 허용하지 않는다

0개의 댓글