23.04.24 JAVA

천용·2023년 4월 24일
0

JAVA

목록 보기
14/23

업캐스팅(부모클래스 객체로 자식에게 접근하는 행위)

  • 부모클래스가 혼자 가지고 있는 메소드는 실행가능
  • 자식클래스에서 재정의되어졌다면 자식클래스 메소드 실행
  • 자식클래스에서 고유하게 가지고 있는 메소드는 실행불가

ex) Animal animal = new Dog(); (업캐스트)

다형성을 위해 사용
업캐스트 된 것만 다운캐스트 가능
다운캐스트는 캐스트연산자 생략불가
다운캐스트를 하기 위해서는 업캐스트가 먼저 이루어져야 하며, instanceof 연산자를 사용하여 적절한 캐스팅이 가능한지 확인한 후에 캐스팅을 수행해야 합니다. 캐스팅이 불가능한 경우 ClassCastException이 발생할 수 있다는 것입니다.

ex) Dog dog = (Dog) animal; // animal이 Dog 클래스의 객체일 때 가능(다운캐스트)

부모 클래스의 타입으로 자식 클래스 객체를 참조 할 때 업캐스트를 사용하고, 자식 클래스의 타입으로 부모 클래스 객체를 참조할 때 다운캐스트를 사용합니다.

instanceof 연산자

  • 어떤 객체가 어느 클래스의 인스턴스인지 확인
  • 메소드 내 강제 타입 변환 필요한 경우 타입 확인하지 않고 강제 타입 변환 시도 시 ClassCastException 발생할 수 있다. instanceof 연산자를 통해 확인 후 안전하게 실행

boolean result = 좌항(객체) instanceof 우항(타입)

Parent parent = new Parent();
Child child = (Child) parent;

public void method(Parent parent) {
    if(parent instanceof Child) {
        Child child = (Child) parent;
    }
}

클래스 타입 변환 : 다른 클래스 타입으로 객체를 대입
자동 타입 변환 : 자식 객체를 부모 타입 변수에 대입할 때에는 자동으로 타입이 변환됨
강제 타입 변환 : 부모 타입 객체를 다시 자식 타입에 대입할 때 강제 타입 변환일 필요
instanceof 연산자 : 객체가 어떤 타입인지 조사할 때 instanceof 연산자 사용
다형성: 객체 사용 방법은 동일하나 실행결과가 다양하게 나오는 성질 메소드 재정의와 타입 변환으로 구현

profile
성장하는 개발자가 되자

0개의 댓글