다형성(polymorphism)

roglog·2021년 7월 5일
0

java의 정석

목록 보기
21/36

1. 다형성


  • 여러 가지 형태를 가질 수 있는 능력
  • 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함
  • 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할 수 있도록 함
    Ex)
    class Tv { }
    class CpationTv extends Tv { }

    Tv t = new CaptionTv();
  • 조상 타입으로 참조하면 자손타입 인스턴스의 모든 멤버를 사용할 수 없음
    (자손 타입에서 선언한 멤버들은 사용불가)
  • 자손타입의 참조변수로 조상타입의 인스턴스를 참조하는 것은 불가능함
    (실제 인스턴스인 조상타입의 인스턴스보다 참조변수가 사용할 수 있는 멤버 개수가 더 많기 때문)
  • 참조변수가 사용할 수 있는 멤버의 개수는 인스턴스의 멤버 개수보다 같거나 적어야 함

2. 참조변수의 형변환


  • 참조변수는 서로 상속관계에 있는 클래스 사이에서만 형변환이 가능함
    (간접조상으로도 형변환 가능)
  • 자손타입 -> 조상타입(Up-casting): 형변환 생략가능
  • 자손타입 <- 조상타입(Down-casting): 형변환 생략불가
    Ex1)
    Car car = null;
    FireEngine fe = new FireEngine();
    FirEngine fe2 = null;

    car = fe;
    fe2 = (FireEngine)car;

Ex2)

    Car car = new Car();
    FireEngine fe = new FireEngine();

    fe = (FireEngine)car;  // 에러

3. instanceof연산자


  • 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 사용
  • boolean값을 리턴하며, true 리턴 시 참조변수가 검사한 타입으로 형변환이 가능하다는 것을 의미
    Ex)
    if(c instanceof FireEngine) {
        console.log("OK");
    }

java의 정석 chapter7

profile
Full Stack Developer 📚

0개의 댓글