클래스의 타입 변환도 자료형 변환과 마찬가지로
자동 형 변환과 강제 형 변환이 있다.
단, 자료형에 비해 변환이 가능한 범위가 상당히 좁은데
서로 상속 관계에 있는 클래스 사이에서만 변환할 수 있다.
[클래스에서의 자동 타입 변환]
상속 관계에 있는 자식 클래스의 객체를
부모 타입의 객체로 변환하는 것을 말한다.
자식 클래스 객체 ▶ 부모 클래스 객체
2가지 경우가 있다.
1. 부모클래스(타입) 객체 변수 = new 자식 클래스();
//자식 클래스 객체를 만들면서 부모 클래스 객체 사용하는 경우
2. 부모 클래스(타입) 객체 변수 = 자식 객체;
//만들어진 자식 객체를 부모 타입으로 변환하는 경우
class Parent{}
class Child extends Parent{}
Parent p1 = new Parent();
//부모 객체 p1
Child c1 = new Child();
//자식 객체 c1
Parent p2 = new Child();
//1. 자식 생성자를 통해 부모 객체 생성
Parent p3 = c1;
//2. 만들어진 자식 객체를 부모 타입으로 변환
1,2 모두 자식 클래스 객체가 부모 클래스 객체로 자동형변환 된다.
쉬운 한글 풀이)
Car 클래스에 자식 클래스로 Bus 클래스가 있다면?
Bus는 Car라고 할 수 있지만, Car는 Bus라고 하기엔
범위가 좁아져 한정하여 정의할 수는 없다.
[클래스에서의 강제 타입 변환]
자바에서는 부모 타입이 자식 클래스의
멤버에 접근할 수 없으므로, 객체 c1 처럼
부모클래스로 자동 타입 변환이 된 객체의 경우
자식 클래스 멤버에 접근하려면 다시
자식타입으로 변환 되어야만 한다.
이를 '클래스 강제 타입 변환' 이라고 한다.
자동 타입 변환과는 달리, 개발자가 직접
명시해야만 타입 변환을 할 수 있다.
부모 타입에서 자식 타입으로 변환하려면
반드시 변환하고자 하는 타입 형태를
직접 작성해야 하는데, 예시를 통해 확인하자.
일회성 변환 필요 시
((자식타입) 부모타입).메서드();
여러 번 필요 시
자식 타입 변수에 담아서 사용
자식 타입 변수 = (자식 타입) 부모 타입;
Child kids = (Child) parent;
//자식 타입으로 강제 타입 변환
kids.punch();
//이로 인해 자식 클래스 메서드 사용 가능
단, 모든 부모 타입 객체를 자식 타입으로
변환할 수 있는 것은 아니다.
반드시 부모 타입으로 자동 타입 변환되었던
자식 객체를 다시 자식 타입으로 변환할 때만
강제 타입 변환을 사용할 수 있다.
(부모 ▶ 자식 X)
(자식 ▶ 부모 ▶ 자식 O)
'개주 훈련일지 > 📚 코살대 교본 학습' 카테고리의 다른 글
| 소프트웨어 개발 프로세스 (1) | 2025.11.11 |
|---|---|
| 다형성 / instanceof / 오버로딩과 오버라이딩 (0) | 2025.11.10 |
| 소프트웨어 생명주기 (0) | 2025.11.10 |
| 상속 (0) | 2025.11.08 |
| 생성자 (0) | 2025.11.06 |