개인 공부 블로그

자동 타입 변환(Promotion) 본문

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 객체를 참조하는 것이 아님.

 

 

- 바로 위의 부모가 아니더라도 상속 계층에서 상위 타입이면 자동 타입 변환이 일어날 수 있다.

- 부모 타입으로 자동 타입 변환된 이후에는 변수는 자식 객체를 참조하지만 부모 클래스의 필드, 메소드만 접근이 가능함. 

  그러나 예외로 메소드가 자식클래스에서 오버라이딩 되었다면 자식 클래스의 메소드가 대신 호출된다.

   -> 다형성과 관련있는 매우 중요한 성질

 

필드의 다형성

왜 자동 타입 변환이 필요할까? 그냥 자식타입으로 사용 안하고 부모 타입으로 변환하는 이유?

-> 다형성을 구현하는 기술적 방법 때문에

 

자동차를 구성하는 부품은 언제든지 교체가 가능. 객체 지향 프로그램에서도 마찬가지로 객체들은 다른 객체로 교체될 수 있어야 한다. 새로 교체되는 타이어 객체는 기존 타이어와 사용 방법은 동일하지만 실행 결과는 더 우수하게 나와야 할 것이다. 이것을 구현하기 위해 상속, 오버라이딩, 타입 변환을 이용하는 것이다. 

'JAVA' 카테고리의 다른 글

자바 컴파일러, 바이트코드, JVM  (0) 2024.02.05
protected 접근 제한자  (0) 2023.09.21
final 클래스와 final 메소드  (0) 2023.09.21
메소드 재정의  (0) 2023.09.21
상속  (0) 2023.09.21