ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 다형성(Polymorphism)
    JAVA 2023. 3. 2. 20:45

    다형성 : 사용 방법은 동일하지만 실행 결과가  다양하게 나오는 성질

    • 하위 클래스 타입의 객체(인스턴스)를 상위 클래스 타입의 변수로 참조 가능!!!!!!!!!!!!!
    • 자바는 기본적으로 동일한 참조 타입의 객체를 생성해야 하지만 경우에 따라 다른 참조 타입으로 객체를 생성하기도 한다.

     


    타입 변환

    • 클래스는 참조 타입의 자료형으로 사용될 때 타입 변환이 가능하다.
    • 클래스의 타입 변환은 상송 관계의 클래스 사이에서 발생한다.

    업캐스팅(up casting)

    • 하위 클래스 객체를 상위 클래스 참조 타입의 변수로 선언하는 것
    • 컴파일러가 하위 클래스 객체를 상위 클래스 참조 타입의 변수로 인식

     

    Cat cat = new Cat();    //Cat은 Animal의 자식 클래스
    Animal animal = cat;    //부모 클래스로 자동 타입 변환 

     

    • 타입 변환이 되어도 참조하는 객체(자식 객체)는 동일하다.
    • 상위 클래스에 정의된 메소드 호출 시 각각의 하위 클래스에 재정의된 메소드가 실행된다.

     


    다운캐스팅(down casting)

    • 상위 클래스 객체를 하위 클래스 참조 타입으로 형변환하는 것
    • 컴파일러가 상위 클래스 타입의 변수로 인식했던 하위 클래스 객체를 다시 하위 클래스 타입의 변수로 인식

     

    Animal a = new Dog(); //컴파일러는 Dog 객체를 Animal 참조 타입으로 인식
    Dog d = (Dog) a; //컴파일러가 Animal 타입으로 인식했던 Dog 객체를 다시 Dog 타입으로 인식

     


    객체 타입 확인

     

    instanceof 연산자 

     

    boolean result = 객체 instanceof 타입;

     

    1. 참조변수가 참조하는 인스턴스의 객체 타입을 검사할 때 사용

    2. 타입 변경 후 차별적인 작업을 수행하기 위함.

     

    if(s instanceof Circle) {
        Circle c = (Circle) s;
        ​System.out.println("반지름이 " + c.r + "인 원의 넓이는 " + c.res);
    }​

     

    • Java 12 버전부터 연산 결과가 true이면 우측 타입 변수를 사용할 수 있는 기능을 지원한다.

     

    if(parent instanceof Child child) {
        //child 변수 사용
    }

     


     

    'JAVA' 카테고리의 다른 글

    인터페이스(Interface)  (0) 2023.03.02
    추상 클래스(abstract class)  (0) 2023.03.02
    final 키워드  (0) 2023.03.02
    접근 제한자(access modifier; 접근 제어자)  (0) 2023.03.02
    스레드(Thread)  (0) 2023.03.02
Designed by Tistory.