다형성이란?

yookyungmin·2023년 4월 10일
0

자바는 해도 해도 복습은 필수인것 같다.

다형성(Polymorphism)이란?

  • 여러가지 형태를 가질수 있는 능력
  • 조상 타입의 참조 변수로 자손 타입 객체를 다루는것
class Tv{
	boolean power;
    int channel;
    void power(){ power = !power;}
    void channelUp() { ++channel;}
    void channelDown() { --channel;}
}
class SmartTv extends Tv{
	String text;
    void caption() {/*내용생략*/}
}

객체 생성을 했을 때 이렇게 했을 것이다

Tv t = new Tv();
SmartTv s = new SmartTv();

하지만

Tv t = new SmartTv(); 

자손 클래스를 조상 클래스로 다루는 것을 다형성이라고 말한다.

  • 객체와 참조변수의 타입이 일치할 때와 일치하지 않을 떄의 차이?
SmartTv s = new SmartTv(); 

참조변수, 인스턴스 타입 일치
모든 기능 사용 가능

Tv t = new SmartTv();

조상 타입 참조변수로 자손 타입 인스턴스 참조
5개 기능만 사용 가능
부모의 참조 변수로 자식 클래스를 다루면 부모 클래스에 있는 멤버와 메서드들만 사용할 수 있습니다.
참조변수로 사용할 수 있는 멤버의 갯수가 달라집니다

  • 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다.
Tv t = new SmartTv(); //허용
SmartTv s = new Tv(); //허용 안됨

실제 사용할 수 있는 멤버 갯수보다 참조하는 변수가 사용할수 있는 멤버갯수가 많으면 안된다.

0개의 댓글