java
24. 클래스의 형 변환
dalc3154
2025. 2. 25. 17:21
자바에서의 형 변환에는 변수& 자료형의 자동 형 변환(묵시적 형 변환),과 강제 형 변환(명시적 형 변환)이 있다
클래스의 관계에서도 형 변환이 가능하다
클래스의 형 변환에는 자동 타입 변환(Upcasting), 강제 타입 변환(Downcasting)이 있으며 자료형의 변환보다 가능한 범위가 좁음
>>클래스의 형 변환은 상속 관계에 있는 클래스 사이에서만 변환되기 때문
상속 관계의 클래스들 예시)
class Parent {
void displayInfo() {
System.out.println("부모 클래스 입니다");
}
}
class Child extends Parent {
@Override
void displayInfo() {
System.out.println("자식 클래스입니다, 재정의");
}
void childMethod() {
System.out.println("자식 클래스만이 가진 메소드입니다");
}
}
형 변환
public class E_Class_Type {
public static void main(String[] args) {
// 자동 타입 변환(Upcasting): 자식 객체를 부모 클래스 타입으로 변환
// 직접 명시 X, 자동으로 타입 변환이 일어남
// 1.자식 객체를 생성하면서 즉시 부모 타입으로 변환하여 저장
// 부모클래스 객체변수 = new 자식클래스();
Parent childObject = new Child();
childObject.displayInfo();// 자식 클래스입니다, 재정의
//childObject.childMethod();
// 자동 형 변환의 경우 해당 객체는 보존되면서, 부모 객체처럼 사용
// 두 클래스 간의 공통된 특성이 아닌 경우 자식만의 기능은 사용할 수 없다
// 2.이미 생성된 객체를 부모 타입으로 변환
Child childObject2 = new Child();
childObject2.displayInfo();// 자식 클래스입니다, 재정의
childObject2.childMethod();// 자식 클래스만이 가진 메소드입니다
// 부모클래스 객체변수 = 자식객체변수;
Parent parentObject = childObject2;// 업캐스팅
parentObject.displayInfo();
//parentObject.childMethod();
// 강제 타입 변환(Downcasting, 다운캐스팅)
// '부모 클래스 타입으로 변환된 객체'를 다시 자식 클래스 타입으로 변환하는것
// 자식 클래스에만 정의된 멤버에 다시 접근 가능
// 자식타입 객체변수 = (자식타입) 부모객체;
Child child = (Child) parentObject;
child.displayInfo();// 자식 클래스입니다, 재정의
child.childMethod();// 자식 클래스만이 가진 메소드입니다
// 클래스 타입 변환 시 주의점: 반드시 상속 관계와 객체의 실제 타입을 확인
// >> 잘못된 캐스팅은 Exception이 발생
}
}
E