minOS

자바의 정석 ch7-23 다형성 본문

TIL/남궁성의 자바의 정석

자바의 정석 ch7-23 다형성

minOE 2023. 12. 13. 20:51
728x90

ch7-23 다형성

- 여러가지 형태를 가질 수 있는 능력
- 조상타입 참조변수로 자손 타입 객체를 다루는 것
- 자손 타입의 참조변수로 조상 타입의 객체를 가리킬 수 없다
class Tv{
    boolean power;
    int channel;

    void power(){power =! power;}
    void channelUp(){++channel;}
    void channelDown(){--channel;}
}

class SmartTv extends Tv{
    String text; //자막
    void caption(){}
}


public class Main {
    public static void main(String[] args) {
        SmartTv s1  = new SmartTv(); // 1) 참조변수와 인스턴스의 타입이 일치
        Tv tv = new SmartTv();       // 2) 조상타입 참조변수로 자손타입 인스턴스 참조
        SmartTv s2 = new Tv();       // 3) 자손타입의 참조변수로 조상타입의 객체를 가리킬 수 없다
                                     // (자손의 클래스 멤버가 개수가 조상 클래스 멤버 개수 보다 많기 때문)
    }
}

1) 참조변수와 인스턴스의 타입이 일치

2) 조상타입 참조변수로 자손타입 인스턴스 참조
3) 자손타입의 참조변수로 조상타입의 객체를 가리킬 수 없다
자손 클래스멤버에 없는 것을 호출하면 에러 발생
728x90