[java] 다형성이란

다형성이란

다형성(Polymophism)이란?

다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미함

참조 변수의 다형성

참조 변수의 타입 변환

자바에서는 참조 변수도 다음과 같은 조건에 따라 타입 변환을 할 수 있음

  1. 서로 상속 관계에 있는 클래스 사이에만 타입 변환을 할 수 있음

  2. 자식 클래스 타입에서 부모 클래스 타입으로의 타입 변환은 생략할 수 있음

  3. 하지만 부모 클래스 타입에서 자식 클래스 타입으로의 타입 변환은 반드시 명시해야 함

    // 문법
    (변환할타입의클래스이름) 변환할참조변수
       
    //예제
    class Parent { ... }
    class Child extends Parent { ... }
    class Brother extends Parent { ... }
       
    ...
       
    Parent pa01 = null;
    Child ch = new Child();
    Parent pa02 = new Parent();
    Brother br = null;
       
    pa01 = ch;          // pa01 = (Parent)ch; 와 같으며, 타입 변환을 생략할 수 있음.
    br = (Brother)pa02; // 타입 변환을 생략할 수 없음.
    br = (Brother)ch;   // 직접적인 상속 관계가 아니므로, 오류 발생.
    

instanceof 연산자

자바에서는 instanceof연산자를 제공하여, 참조 변수가 참조하고 있는 인스턴스의 실제 타입을 확인할 수 있도록 함

//문법
참조변수 instanceof 클래스이름