자바의 업캐스팅과 다운캐스팅

mDev_97·2022년 1월 5일
0

Java

목록 보기
9/28

업캐스팅 (Upcasting)

• 서브 클래스의 객체를 슈퍼 클래스 타입으로 타입 변환하는 것

• 서브 클래스의 객체는 슈퍼 클래스의 모든 멤버를 가지고 있다.
-> 슈퍼 클래스의 객체로 취급 가능

• 업캐스팅된 레퍼런스는 슈퍼 클래스의 멤버만 접근 가능하다.

class NumberOne {
    .....
}

class NumberTwo extends NumberOne {
    .....
}

public class UpcastingExample {
    public static void main(String[] args) {
        NumberTwo numberTwo = new NumberTwo();
        NumberOne numberOne = numberTwo; // 업캐스팅
        // 자동으로 타입이 변환된다.
    }
}

다운 캐스팅 (Downcasting)

• 슈퍼 클래스의 객체를 서브 클래스 타입으로 타입 변환하는 것
• 명시적으로 타입을 변환하여야 한다.

class NumberOne {
    .....
}

class NumberTwo extends NumberOne {
    .....
}

public class DowncastingExample {
    public static void main(String[] args) {
        NumberOne numberOne = new NumberTwo(); // 업캐스팅
        ...
        NumberTwo numberTwo = (NumberTwo)numberOne; // 다운캐스팅
        // (NumberTwo)와 같이 타입 변환의 명시적 표시가 필요하다.
    }
}

instanceof 연산자

• 업캐스팅된 레퍼런스는 객체의 타입을 판단하기 어렵다.
-> 여러 서브 클래스가 슈퍼 클래스를 상속하기 때문

• 레퍼런스가 가리키는 객체의 타입을 식별하기 위해 사용

• instanceof 연산자는 객체에 대한 레퍼런스만 사용할 수 있다.

객체레퍼런스 instanceof 클래스타입
-> true 또는 false 값 반환

if(10 instanceof int) // 문법 오류
if("JAVA" instanceof String) // String은 사용 가능
profile
안녕하세요. 백엔드, 클라우드, 인프라에 관심과 열정이 있는 김문성입니다. 😊

0개의 댓글

관련 채용 정보