<자바에서의 형변환>
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 |