인프런 강의 학습/Java TPC
Java TPC_14일차 객체 형 변환
현호s
2022. 1. 19. 23:32
반응형
# 부모 자식간 형 변환
## 객체 형 변환 (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();
반응형