JAVA/포스팅

자바 참조변수의 형변환

짜집퍼박사(짜박) 2023. 11. 12. 13:03

자바에서 참조 변수의 형변환은 크게 두 가지로 나뉩니다. 업캐스팅(upcasting)과 다운캐스팅(downcasting).

 

1. 업캐스팅(Upcasting)

업캐스팅은 하위 클래스의 객체를 상위 클래스 타입으로 변환하는 것을 말합니다. 이는 자동으로 이루어집니다. 업캐스팅은 안전하게 이루어지며, 컴파일러가 자동으로 처리합니다. 업캐스팅을 통해 상위 클래스 타입의 참조 변수로 하위 클래스의 객체를 참조할 수 있습니다.

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Dog(); // 업캐스팅
        myAnimal.sound(); // 실행 시 Dog 클래스의 오버라이딩된 메서드가 호출됨
        // myAnimal.bark(); // 에러! Animal 타입으로 선언된 변수는 Dog 클래스의 고유 메서드에 접근할 수 없음
    }
}

 

2. 다운캐스팅(Downcasting)

다운캐스팅은 상위 클래스 타입의 참조 변수를 다시 하위 클래스 타입으로 변환하는 것을 말합니다. 이는 명시적으로 형변환을 해주어야 합니다. 다운캐스팅은 런타임 시에 ClassCastException이 발생할 수 있으므로 주의가 필요합니다.

class Animal {
    void sound() {
        System.out.println("Animal makes a sound");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("Dog barks");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal myAnimal = new Dog(); // 업캐스팅
        if (myAnimal instanceof Dog) {
            Dog myDog = (Dog) myAnimal; // 다운캐스팅
            myDog.bark(); // 실행 시 Dog 클래스의 고유 메서드에 접근 가능
        }
    }
}

업캐스팅과 다운캐스팅을 함께 사용하여 여러 객체를 일관된 인터페이스로 다룰 수 있고, 실행 시에 원래 객체의 타입에 따라 동작을 조절할 수 있습니다. 이는 다형성을 구현하는 데 기여하며, 객체 간의 유연한 관계를 형성할 수 있습니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 업캐스팅(Upcasting)  (0) 2023.11.12
자바 다운캐스팅(Downcasting)  (0) 2023.11.12
자바 strictfp 제어자  (0) 2023.11.12
자바 native 제어자  (0) 2023.11.12
자바 transient 제어자  (0) 2023.11.12