웹개발/JAVA

클래스 형(ClassType)변환

bergerac 2025. 2. 26. 09:11

<자바에서의 형변환>

1) 자료형 변환: 변수 &자료형에서의 '자동형변환(묵시적)', '강제 형변환(명시적)'

2)클래스 타입 변환 

자동타입 변환 (Upcasting), 강제 타입 변환 (Down casting)

자료형 변환보다 가능한 범위가 좁다.

 >> 상속 관계에 있는 클래스 사이에서만 변환이 가능하다.

 

1> 자동 타입 변환(Upcasting)

: 자식 객체를 부모 클래스 타입으로 변환한다

직접 명시하지 않아도 자동으로 타입 변환이 일어납니다.

<방법>

1) 자식 객체를 생성하면서 즉시 부모 타입으로 변환하여 저장하는 방법

부모 클래스 객체변수 = new 자식클래스();
Parent childObject = new Child();

 

<Full code>

class Parent{
    void displayInfo(){
        System.out.println("Parent class");
    }
}
class Child extends Parent{
    @Override
    void displayInfo(){
        System.out.println("child class");
    }
    void childMethod(){
        System.out.println("only child class");
    }
}
public class E_ClassType {
    public static void main(String[] args) {
        Parent childObject = new Child();
        childObject.displayInfo();


    }
}

자동 형 변환의 경우에는 해당 객체는 보존되면서, 사용은 부모 객체처럼 사용한다.

해당 객체는 보존되며 사용되는 것이기 때문에 두 클래스 간의 공통된 특성이 아닌 경우 자식만의 기능은 사용할 수 없다.

 

2) 이미 생성된 객체를 부모 타입으로 변환하는 경우 

//부모 클래스 객체변수 = 자식객체변수;
Parent parentObject = childObjet2;//upcasting
parentObject.displayInfo();
parentObject.childMethod();
//자식만이 가진 메서드는 이미 Parent클래스로 변환되고 나면 사용할 수 없음
//코드 4줄에서 error

 

 

2>강제 타입 변환(Downcasting, 다운캐스팅)

부모 클래스 타입으로 변환된 객체를 다시 자식 클래스 타입으로 변환하는것

**일반적으로 만들어진 부모 클래스 타입은 안된다.

이후 자식 클래스에만 정의된 멤버에 다시 접근이 가능하다.

//자식타입 객체변수 = (자식타입) 부모객체;
Child child = (Child)parentObject;
child.displayInfo();
child.childMethod();

 

<실행결과>

child class
only child class

 

****클래스 타입 변환 시 주의점

: 반드시 상속 관계와 객체의 실제 타입을 확인하다

>>잘못된 캐스팅은 Exeption이 발생한다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'웹개발 > JAVA' 카테고리의 다른 글

추상화(Abstract) - Interface  (0) 2025.02.28
추상화(Abstract)-abstract class  (0) 2025.02.27
Collection- Map Interface  (0) 2025.02.25
Collection - Set Interface  (1) 2025.02.24
Collection - Java List  (1) 2025.02.23