반응형
# 부모 자식간 형 변환
## 객체 형 변환 (Object Casing)
- 상속관계에 있는 클래스들 간의 형 (Data Type)을 바꾸는 것.
- 자동 형 변환 (UpCasting)
부모 = 자식.
Animal r = new Dog();
r = new Cat();
- 강제 형 변환 (DownCasting)
자동 형 변환(UpCasting)이 전재되면, 강제 형 변환가능.
Animal r = new Cat();
((Cat)c).night();
## 객체 형 변환 (실습)
public class TPC23 {
public static void main(String[] args) {
// 자동 형 변환 (UpCasting)
// 방법1. Cat cat = new Cat();
// 방법2. Object ani = new Cat();
Animal ani = new Dog(); //방법3.
ani.eat(); // 컴파일시점에서 Animal의 eat() / 실행시점에서는 Dog의 eat()
//ani.night(); // Dog에는 없기때문에 불가능.
((Cat)ani).night(); // 강제 형 변환 (DownCasting)
// 다형성 : 상위 클래스가 하위 클래스에게 동일한 메시지로 서로 다르게 동작시키는 객체지향의 원리.
}
}
# 다형성
## message polymorphism (다형성) -> 객체 지향 이론의 꽃
- 상속 관계에 있는 클래스에서 상위 클래스가 동일한 메시지로 하위클래스들을 서로 다르게 동작시키는 객체지향 원리
상위 클래스 Animal
하위 클래스 Cat, Dog
=>
상위 클래스인 Animal 이 하위 클래스인 Cat, Dog에게 동일한 메시지(eat)를 보내면,
하위 클래스인 Cat, Dog의 eat 메서드가 서로 다르게 동작하는 것.
- 재정의 (Override) 가 전제 되어야 다형성 이론 설명 가능.
Animal d = new Dog();
d.eat();
d = new Cat();
d.eat();
- 강제 형 변환 (DownCasting)을 통해 하위클래스의 night 메서드에 접근 가능.
Animal ani = new Cat();
ani.night(); // 불가능.
((Cat)ani).night();
반응형
'인프런 강의 학습 > Java TPC' 카테고리의 다른 글
Java TPC_16일차 추상 클래스 / 인터페이스 / 인터페이스(규약)와 JDBC의 관계 / 인터페이스의 상속관계 (0) | 2022.01.23 |
---|---|
Java TPC_15일차 다형성 활용 (다형성인수, 다형성배열) (0) | 2022.01.21 |
Java TPC_13일차 상속관계에서 객체생성 방법 (0) | 2022.01.18 |
Java TPC_12일차 수평적 구조와 수직적 구조 / 상속 / 오버라이드 (0) | 2022.01.17 |
Java TPC_11일차 class (0) | 2022.01.13 |