The Debugging Chronicles : "코드의 미학"

Mentor JAVA - section11. 다형성과 타입 변환 본문

JAVA/Mentor JAVA

Mentor JAVA - section11. 다형성과 타입 변환

sweetseonah1004 2024. 7. 22. 23:38

01.  클래스의 타입 변환

타입 변화은 타입을 다른 타입으로 변환하는 것으로 자바에서는 다음과 같이 두가지 대표적인 타입 변환이 있다

- 자료형 (타입) 변환
- 클래스의 객체 타입 변환

 

클래스 타입 변환은 서로 상속 관계에 있는 클래스 사이에서만 변환할 수 있습니다.

 

1. 클래스의 자동 타입 변환

 

개발자가 직접 명시하지 않아도 자동으로 타입 변환이 일어나는 것 '클래스 자동 타입 변환'

자식 객체를 만들면서 바로 부모 타입으로 변환할 때는 다음 과 같이 구현

 

부모 클래스 (타입) 객체 변수 = new 자식 클래스();

 

만들어진 자식 객체를 부모 타입으로 변환할 때는 

부모클래스(타입) 객체변수 = 자식 객체;

 

package section11;

class parent{}
class Child extends parent{}

public class EX11_01{
	public static void main(String[] args){
   		Parent p1 = new parent(); // p1 객체 생성
        Child c1 = new Child(); // c1 객체 생성
        
        Parent p2 = new Child(); // 자동 타입 변환
        Parent P3 =  c1; // 자동 타입 변환
       	// Child c2 = p1; <= 자동 타입 변환 안됨
        
        if(p3 == c1){
        	// p3와 c1 같은 객체를 참조하고 있습니다
  		}
   
   }
}

 

즉, Child 타입의 Child 객체 c1의 타입을 Parent로 변환해 만든 p3는 여전히 c1 객체라는 것을 확인할 수 있습니다.

타입을 변환한다고  객체가 바뀌는 것이 아니라, 객체는 보존되고 사용만 부모 객체처럼 사용한다.