JAVA
자동 타입 변환(Promotion)
패잇
2023. 9. 21. 17:45
프로그램 실행 도중에 자동적으로 타입 변환이 일어나는 것.
자동 타입 변환은 아래와 같은 조건에서 일어남.
부모클래스 변수 = 자식클래스 타입;
Class Animal {
...
}
Class Cat extends Animal {
...
}
생략
...
Cat cat = new Cat();
Animal animal = cat; // Animal animal = new Cat()도 가능.
cat과 animal 변수는 타입만 다를 뿐, Cat 객체를 참조한다. 부모인 Animal 객체를 참조하는 것이 아님.
- 바로 위의 부모가 아니더라도 상속 계층에서 상위 타입이면 자동 타입 변환이 일어날 수 있다.
- 부모 타입으로 자동 타입 변환된 이후에는 변수는 자식 객체를 참조하지만 부모 클래스의 필드, 메소드만 접근이 가능함.
그러나 예외로 메소드가 자식클래스에서 오버라이딩 되었다면 자식 클래스의 메소드가 대신 호출된다.
-> 다형성과 관련있는 매우 중요한 성질
필드의 다형성
왜 자동 타입 변환이 필요할까? 그냥 자식타입으로 사용 안하고 부모 타입으로 변환하는 이유?
-> 다형성을 구현하는 기술적 방법 때문에
자동차를 구성하는 부품은 언제든지 교체가 가능. 객체 지향 프로그램에서도 마찬가지로 객체들은 다른 객체로 교체될 수 있어야 한다. 새로 교체되는 타이어 객체는 기존 타이어와 사용 방법은 동일하지만 실행 결과는 더 우수하게 나와야 할 것이다. 이것을 구현하기 위해 상속, 오버라이딩, 타입 변환을 이용하는 것이다.