다운 캐스팅(DownCasting)
다운 캐스팅(Downcasting)은 슈퍼클래스(부모 클래스) 타입의 참조를 서브클래스(자식 클래스) 타입으로 변환하는 과정을 의미합니다.
다운 캐스팅의 사용 목적은 다음과 같습니다.
- 다형성의 활용
- 다형성을 통해 슈퍼클래스 타입의 참조 변수로 서브클래스의 인스턴스를 참조할 수 있습니다.
- 이때, 슈퍼클래스에 없는 서브클래스의 메서드나 필드를 사용하고자 할 때 다운 캐스팅을 사용하여 서브클래스 타입으로 변환한 뒤 접근할 수 있습니다.
- 메모리 사용 최적화
- 슈퍼클래스 타입의 참조 변수로 여러 서브클래스의 인스턴스를 참조할 수 있으므로, 메모리 사용을 줄이고 코드의 유지 보수성을 높일 수 있습니다.
Java에서 다운 캐스팅의 예시
class Animal {
public void makeSound() {
System.out.println("The animal makes a sound");
}
}
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("The dog barks");
}
public void playFetch() {
System.out.println("The dog plays fetch");
}
}
public class Main {
public static void main(String[] args) {
Animal myAnimal = new Dog(); // 업 캐스팅 (Upcasting)
myAnimal.makeSound(); // 다형성을 통해 오버라이딩 된 메서드 호출
if (myAnimal instanceof Dog) {
Dog myDog = (Dog) myAnimal; // 다운 캐스팅 (Downcasting)
myDog.playFetch(); // 서브클래스의 메서드 호출
}
}
}
Instanceof : 함께 사용하면 좋다
instanceof
는 Java에서 특정 객체가 특정 클래스 또는 인터페이스의 인스턴스인지 확인하는 연산자입니다.
instanceof
는 주로 다운 캐스팅을 수행하기 전에 안전성을 확인하는 용도로 사용됩니다.
또한, 상속 관계나 인터페이스 구현 관계를 통해 여러 클래스의 객체들을 처리할 때 객체의 실제 타입을 확인하기 위해 사용됩니다.
instanceof
연산자는 다음과 같은 형식으로 사용됩니다:
object instanceof ClassName
object
는 확인하려는 객체이며, ClassName
은 확인하려는 클래스 또는 인터페이스의 이름입니다.
연산자는 object
가 ClassName
의 인스턴스이면 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
'DEV > Java' 카테고리의 다른 글
프레임워크와 라이브러리의 차이 (0) | 2023.04.27 |
---|---|
Template 메서드 패턴 (0) | 2023.04.27 |
가상 함수(Virtual Method) (0) | 2023.04.27 |
Is-A와 HAS-A 또는 Inheritance와 Composition - 🐥 카카오 테크 캠퍼스 (0) | 2023.04.27 |
다형성(Polymorphism) (0) | 2023.04.27 |