ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java - 상속과 다형성(묵시적 형변)3
    카테고리 없음 2023. 10. 17. 16:19

    상위 클래스로 묵시적 클래스 형 변환

    상속을 공부하면서 이해해야 하는 중요한 관계가 클래스 간의 형 변환이다. 일단 앞서 상속과 다형성1,2에서 살펴본 Customer와 VIPCustomer의 관계를 생각해 보자. 개념적인 면에서 보면 상위 클래스인 Customer가 VIPCustomer보다 포괄할 수 있는 클래스가 더 많은 일반적인 개념이고, 기능 면에서 보면 VIPCustomer가 기능은 더 많다. 왜냐하면 상속을 받은 하위클래스는 상위 클래스의 기능을 모두다 사용할 수 있을 뿐더러 거기에 추가로 더 많은 기능을 구현하기 때문이다.

     

     

    더불어 Customer와 VIPCustomer의 관계를 살펴보면 VIPCustomer는 VIPCustomer형(type)이기도 하면서 Customer형이기도 하다. 즉 VIPCustomer 클래스로 인스턴스를 생성할 때 이 인스턴스의 자료형을 Customer형으로 대신 선언하는 것을 '클래스 형을 변환하여 선언'한다고 한다. 이는 VIPCustomer클래스가 Customer를 상속받았기 때문에 가능하다. 그러면 반대로 Customer로 인스턴스를 생성할 때 VIPCustomer형으로 선언할 수 있을까? 그렇지는 않다. 상위 클래스인 Customer가 VIPCustomer클래스의 기능을 다 가지고 있는것은 아니기 때문이다.

     

    형 변화된 vc가 가리키는 것

    Customer vc = new VIPCustomer(); 문장이 실행되면 VIPCustomer생성자가 호출되므로 클래스 변수값이 저장될 공간이 같이 메모리에 만들어진다. 그런데 클래스 자료형이 Customer로 한정되었다. 이렇게 클래스가 형변환 되었을 때는 선언한 클래스형에 기반하여 멤버 변수와 메서드에 접근할 수 있다. 따라서 vc참조 변수가 가리킬 수 있는(사용할 수 있는) 변수와 메서드는 Customer 클래스 멤버 뿐이다. 

     

    클래스의  상속 계층 구조가 여러 단계일 경우에도 묵시적 형변환이 될까?

    Primates aHuman = new Human();
    Mammal mHuman = new Human();

    클래스의 상속 계층이 여러 단계일 경우에도 상위 클래스로 형 변환은 묵시적으로 이루어진다.

     

    [출저 - Do it! 자바 프로그래밍 입문 , 박은종]

    http://www.easyspub.co.kr/20_Menu/BookView/A001/267/PUB

     

    http://www.easyspub.co.kr/20_Menu/BookView/A001/267/PUB

     

    www.easyspub.co.kr

     

    댓글

Designed by Tistory.