다형성 (polymorphism)
포스트
취소

다형성 (polymorphism)

다형성(polymorphism)이란?

  • 하나의 객체가 여러 가지 타입을 가질 수 있는 것
  • 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현가능하다.
  • 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나
  • 사용 예시
class Parent {}
class Child extends Parent {}

Parent pa = new Parent(); //가능
Child ch = new Child();   //가능
Parent pc = new Child();  //가능

Child cp = new Parent();  //오류

참조 변수의 타입 변환

  • 조건
    • 서로 상속 관계에 있는 클래스 사이에만 가능
    • 자식 클래스 타입에서 부모 클래스 타입으로의 타입 변환은 불가
    • 부모 클래스 타입에서 자식 클래스 타입으로의 타입 변환은 자료형을 반드시 명시
    • 사용 예시
//원형
(변환할타입의클래스이름) 변환할참조변수;

//s:예시
    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; 와 같으며, 자식 to 부모라서 명시 생략
    br = (Brother)pa02; //부모 to 자식이라서 명시 필수
    br = (Brother)ch; //부모가 같은 거지 자식끼리는 상속 관계가 아니라서 오류 발생
//e:예시
        

instanceof 연산자

  • 참조 변수가 참조하고 있는 인스턴스의 실제 타입을 확인할 수 있는 연산자
  • 사용 예시
//원형
참조변수 instanceof 클래스이름

//s:예시
    class Parent { }
    class Child extends Parent { }
    class Brother extends Parent { }
    
    Parent p = new Parent();
    System.out.println(p instanceof Object); //출력 : true
    System.out.println(p instanceof Parent); //출력 : true
    System.out.println(p instanceof Child); //출력 : false
//e:예시
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.