반응형
🚨 Java 실행시 발생한 에러 메시지
Exception in thread "main" java.lang.ClassCastException: class poly.basic.Parent cannot be cast to class poly.basic.Child (poly.basic.Parent and poly.basic.Child are in unnamed module of loader 'app') at poly.basic.CastingMain4.main(CastingMain4.java:11)
❓ 에러 발생 이유
다운캐스팅(DownCasting)이 불가능한 경우에 다운캐스팅을 강제로 하여 캐스팅이 실패하여 나타나는 오류 메시지입니다.
즉, Class 간의 캐스팅이 실패하여 나타나는 오류 메시지입니다.
✅ 해결 방법
다운캐스팅이 불가능한 경우를 항상 고려하여 소스 코드를 작성합니다.
아래 코드와 설명문을 참고해 주세요.
Parent.java
public class Parent {
public void parentMethod() {
System.out.println("Parent.parentMethod");
}
}
Child.java
public class Child extends Parent {
public void childMethod() {
System.out.println("Child.childMethod");
}
}
CastingMain.java
public class CastingMain {
public static void main(String[] args) {
Parent parent1 = new Parent();
// Child child1 = (Child) parent1; // 런타임 오류 - ClassCastException
// child1.childMethod(); // 실행 불가
Parent parent2 = new Child();
Child child2 = (Child) parent2;
child2.childMethod();
}
}
Child 클래스는 Parent 클래스를 상속받아 사용합니다.
하지만 위의 CastingMain에서 Parent 변수인 parent1을
강제로 Child 변수인 child1로 다운 캐스팅(DownCasting) 시킬 시 발생하는 에러 메시지입니다.
참고: parent 변수는 Parent 인스턴스만 존재합니다.
즉, parent 변수에 Child 인스턴스가 없기 때문에 해당 에러가 발생합니다.
하지만 child 변수의 경우에는 Child 인스턴스와 Parent 인스턴스 2개가 존재합니다.
반응형
댓글