1. 타입 변환
⚒️ 타입을 다른 타입으로 변환하는 것을 말함
⚒️ 클래스의 타입 변환은 상속 관계에 있는 클래스 사이에서 발생
1) 자동 타입 변환 Promotion
부모타입 변수 = 자식타입객체;
📍 자식은 부모의 특징과 기능을 상속받기 때문에 부모와 동일하게 취급될 수 있다.
Cat cat = new Cat();
Animal animal = cat;
📍 cat과 animal 변수는 타입만 다를 뿐, 동일한 Cat 객체를 참조
cat == animal // true
class A {
}
class B extends A {
}
class C extends A {
}
class D extends B {
}
class E extends C {
}
public class PromotionExample {
public static void main(String[] args) {
B b = new B();
C c = new C();
D d = new D();
E e = new E();
A a1 = b;
A a2 = c;
A a3 = d;
A a4 = e;
B b1 = d;
C c1 = e;
// B b3 = e;
// C c2 = d;
}
}
- 부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에 선언된 필드와 메소드만 접근이 가능
- 변수는 자식 객체를 참조하지만 변수로 접근 가능한 멤버는 부모 클래스 멤버로 한정됨
- 자식 클래스에서 오버라이딩된 메소드가 있다면 부모 메소드 대신 오버라이딩된 메소드가 호출됨
2) 강제 타입 변환 Casting
자식타입 변수 = (자식타입) 부모타입객체;
Parent parent = new Child(); // 자동 타입 변환
Child child = (Child) parent; // 강제 타입 변환
⚒️ 부모 타입은 자식 타입으로 자동 변환되지 않는다. 대신 캐스팅 연산자로 강제 타입 변환을 할 수 있다.
⚒️ 자식 객체가 부모 타입으로 자동 변환하면 부모 타입에 선언된 필드와 메소드만 사용 가능
➡️ 만약 자식 타입에 선언된 필드와 메소드를 꼭 사용해야 한다면 강제 타입 변환을 해서 다시 자식타입으로 변환해야 함
* 내용 참고 - 책 '이것이 자바다'
'Programming Language > JAVA' 카테고리의 다른 글
[Java] 객체 타입 확인 (0) | 2024.08.26 |
---|---|
[Java] 다형성 (0) | 2024.08.24 |
[Java] final 클래스와 final 메소드 · protected 접근 제한자 (0) | 2024.08.23 |
[Java] 오버라이딩 Overriding (0) | 2024.08.11 |
[Java] 상속 Inheritance (0) | 2024.08.11 |