Implicit Type Conversion 묵시적 형변환
자식 클래스가 부모 클래스로 자동 형변환 되는 경우

만약, 자식 클래스에서 부모 클래스의 함수를 override 했을 때, 부모클래스로 형변환된 자식클래스의 객체는 어떤 함수를 사용하게 될까?



즉, 자식 객체에서 부모 객체로 형변환이 일어나더라도, 함수는 overriding된 자식 클래스의 함수를 사용하게 된다는 것
Explicit Type Conversion 명시적 형변환
부모 객체에서 자식 객체로 형변환이 일어나는 것
이 때에는 직접 형변환 제시를 명시해주어야 함
자식 객체가 먼저 부모 객체로 형변환 된 후에, 그 객체를 다시 자식 객체로 형변환 하는 경우에만 가능하다!
이렇게 하지 않으면 ClassCastExeption이 발생한다.


즉, 변형하고자 하는 부모 객체는 이미 한번 자식 객체에서 변환이 이루어진 과거가 존재해야한다.
반대로, 만약, 자식 클래스에서 부모 클래스의 함수를 override 했을 때, 자식클래스로 형변환된 부모클래스의 객체는 어떤 함수를 사용하게 될까?


마찬가지로, override된 함수를 출력하게 된다.
이 객체는 처음에 자식 객체에서 부모 객체로 변형 되었다가, 다시 자식 객체로 변형 되었다고 볼 수 있기 때문이다.
그리고 이런 식으로 자식 객체로 형변환된 부모 객체는 자식 클래스의 필드와 메서드를 사용할 수 있다.
Polymorphism 다형성
다형성을 설명하기 위해, 묵시적 형변환(자식->부모)와 overriding을 이용할 수 있다.
Field Polymorphism



car1을 예시로 들면, tire에 new HankookTire을 넣음으로써 묵시적 형변환(HankookTire -> Tire)이 일어난다.
자식 객체에서 부모 객체로 묵시적 형변환이 일어나더라도 overriding된 함수를 사용하기 때문에 "한국 타이어"를 출력한다.

Parameter Polymorphism
파라미터 내에서 묵시적 형변환이 일어날 수 있음




위 처럼 파라미터 내에서 자식 객체를 넣으면 부모 객체로 묵시적 형변환이 일어나 함수가 수행된다.
이 때, override된 함수를 사용하게 된다.
'CS > Java' 카테고리의 다른 글
[Java] interface 인터페이스 (0) | 2024.05.26 |
---|---|
[Java] 상속 Inheritence - 4 (다운 캐스팅과 instanceof, abstract class 추상 클래스, sealed class) (0) | 2024.04.17 |
[Java] 상속 Inheritance - 2 (Final Class, Final Method, protected 제어자) (0) | 2024.04.15 |
[Java] 상속 Inheritance - 1 (extends, super) (0) | 2024.04.06 |
[Java] Class 클래스 - 2 (정적 변수 static, 상수 final, 패키지, 접근 제어자 private-public-protected, getter & setter) (0) | 2024.04.06 |