[자바]업캐스팅, 다운캐스팅

allnight5·2022년 11월 22일
0

자바 개념정리

목록 보기
9/28

참조
https://www.bing.com/ck/a?!&&p=b4ec3a06a1cdeca3JmltdHM9MTY2OTA3NTIwMCZpZ3VpZD0xZjk1N2NjMC1jZTdkLTZhOTEtMzE0Yi03NmE4Y2E3ZDY5MmEmaW5zaWQ9NTE3MQ&ptn=3&hsh=3&fclid=1f957cc0-ce7d-6a91-314b-76a8ca7d692a&psq=%ec%9e%90%eb%b0%94+%ec%97%85+%ec%ba%90%ec%8a%a4%ed%8c%85+%eb%8b%a4%ec%9a%b4&u=a1aHR0cHM6Ly9tYWRwbGF5LmdpdGh1Yi5pby9wb3N0L2phdmEtdXBjYXN0aW5nLWFuZC1kb3duY2FzdGluZw&ntb=1

업캐스팅

자바에서 서브 클래스는 수퍼 클래스의 모든 특성을 상속받는다. 그렇기 때문에 서브 클래스는 수퍼 클래스로 취급될 수 있다. 여기서 업캐스팅(Upcasting)이란 서브 클래스의 객체가 수퍼 클래스 타입으로 형변환되는 것을 말한다.

    Student student = new Student("MadPlay");

    // 레퍼런스 person을 이용하면 Student 객체의 멤버 중
    // 오직 Person 클래스의 멤버만 접근이 가능합니다.
    Person person = student;
    //aame은 person의 멤버변수이다.
    person.name = "Kimtaeng";
    
    // 아래 문장은 컴파일 타임 오류
    //dept은 student의 멤버변수이다.
    person.dept = "Computer Eng";

그렇다면 업캐스팅은 왜 사용하는 것일까? 업캐스팅을 사용하는 이유는 다형성(Polymorphism)과 관련이 있다.
읽어서 확인하는 곳에서 각 조건 타입 객체를의 메서드를 호출해야하기 때문에

다운캐스팅

다운캐스팅(Downcasting)은 자신의 고유한 특성을 잃은 서브 클래스의 객체를 다시 복구 시켜주는 것을 말한다. 그러니까 업캐스팅된 것을 다시 원상태로 돌리는 것을 말한다. 업캐스팅이 선행되지 않는다면 런타임 오류를 발생시킬 가능성이있다.

instanceof

객체의 타입을 구분하기 위해 instanceof 연산자를 사용할 수 있다.

    if (unit1 instanceof Unit) { // true
        System.out.println("unit1은 Unit 타입이다.");
    }
    if (unit1 instanceof Zealot) { // false
        System.out.println("unit1은 Zealot 타입이다.");
    }
    if (unit2 instanceof Zealot) { // true
        System.out.println("unit2는 Zealot 타입이다.");
        

객체가 실제로 어떤 타입인지 비교할수있다. 실행 시점에 발생할 수 있는 형변환 오류를 줄일 수 있는 것이다

profile
공부기록하기

0개의 댓글