foxpacking

Programming Lessons

Java 언어 Korean

Java 총 정리[66. 참조 자료형 변환 심화]

참조 자료형 변환 심화 1

이전 걸음에서 참조 자료형 변환에 대해서 사용 방법과 어떤 참조 자료형만 형 변환을 할 수 있는지 기초에 대해서 설명을 드렸습니다. 복습의 의미에서 간단하게 설명을 드리면 참조 자료형 변환은 연관 관계가 있는 class가 할 수 있는데 그 연관 관계가 상속입니다. 그래서 부모와 자식이 참조 자료형 변환을 할 수 있었습니다. 그래서 이번 걸음에서는 좀 더 참조 자료형 변환에 대해서 심도 있게 진행을 하도록 하겠습니다.

이번 걸음에서는 참조 자료형 변환 심화로 참조 자료형에 대해서 복합적인 사용 방법과 사용을 하는 경우 좋은 점 그리고 참조 자료형 변환만 쓰면 한계가 존재하는데 존재하는 이유까지 이번 걸음에서 설명을 드리도록 하겠습니다. 이번 걸음을 끝까지 보신다면 참조 자료형 변환에 이해가 한층 깊어지실 수 있습니다.

참조 자료형 변환 심화에서는 참조 자료형 변환의 부모와 자식의 사용 관계와  메소드에서 사용을 할 때 좋은 점과 마지막으로 참조 자료형 변환에 한계에 대해서 이번 걸음에서 알아보도록 하겠습니다.

참조 자료형 변환 이해 심화

참조자료형변환심화설명사진

참조 자료형 변환을 선언과 사용을 하는 것으로는 부족한 부분이 있습니다. 그래서 위의 사진을 가지고 설명을 드리려고 합니다. 제일 중요한 전제는 자료형 기준으로 객체를 사용을 할 수 있습니다. 

  1. 업 캐스팅 : 자료형은 부모 객체는 자식 이 기준으로 본다면 자식에 있는 것들은 사용이 불가 하며 부모가 가지고 있는 것만 사용이 가능 합니다.
  2. 다운 캐스팅 : 다운 캐스팅을 하면 객체와 같은 자료형으로 바뀌기 때문에 당연히 자식과 부모 모두 사용이 가능 합니다.

※ 이전 걸음에서 말씀을 드렸지만 Java언어에서 class 관계에서는 부모가 더 큰 것이 아니라 부모를 상속 받고 내 속성과 기능을 사용을 하기 때문에 무조건 자식이 부모보다 이상의 개념을 가지고 있습니다.

참조 자료형 변환과 메소드

위에 글을 읽으셨다면 의구심이 드실 수 있습니다. 부모로 업 캐스팅을 하거나 다시 다운 캐스팅을 하는데 굳이 이걸 왜 사용을 할까? 하는 의구심이 분명히 존재를 하실 겁니다. 우선 제일 중요한 이유는 하나의 부몬 하나의 자식 이런 개념을 보실 것이 아니라 하나의 부모 여러 명의 자식이 있는 경우를 보셔야 합니다. 

일반적으로 하나의 부모의 여러 자식이 존재하게 구현을 하게 됩니다. 이때 비로서 참조 자료형 변환의 좋은 점이 생기게 됩니다. 부모의 자료형은 모든 자식 객체를 받아서 사용이 됩니다. 

만약에 부모 class A가 있고 그걸 상속 받은 class B, class C, class D, class E가 있다고 하면 객체는 B, C, D, E이지만 자료형은 A로 선언을 할 수 있게 됩니다. 이렇게 말씀을 드려도 그게 뭐가 좋은 거지 하실 수 있습니다. 

그래서 간단히 설명을 드리면 만약에 자식 class인 B, C, D, E를 매개변수를 받는 메소드가 있다고 하면 총 4개의 메소드를 생성을 해야 합니다. 이름을 다르게 해서

예를 들어 getB(B b), getC(C c), getD(D d), getE(E e) 이렇게 할 수 있고 좀 더 편하게 오버로딩을 사용을 하여 get(B b), get(C c), get(D d), get(E e) 구현을 할 수 있습니다. 여기까지 배운 내용으로 할 수 있는 부분 이라고 생각을 합니다.

하지만 참조 자료형 변환에 업 캐스팅을 한다면 get(A a)로만 만들어 사용을 할 수 있습니다.

그럼 메소드 만들어야 하는 양이 줄어 들 수 있어 좋은 점이 있습니다.

참조 자료형 변환 한계

위에 내용처럼 메소드를 하나 만들어서 자식의 객체를 받아서 사용이 가능합니다. 하지만 이 부분에도 한계가 존재 합니다. 그 한계는 이번 글에서 처음 설명 드린 내용을 생각을 하면 좋습니다.  부모의 자료형으로 객체 활용이 되기 때문에 각자의 자식의 고유한 속성과 기능이 사용이 불가 합니다. 그 다음 걸음에서 자식의 객체를 사용을 할 수 있는 법을 배우도록 하겠습니다.

Dolphin

About Author

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You may also like

Korean Programming 기초

IT 개발자 VS 프로축구선수 비교?

IT 개발자와 프로축구선수의 같은 점과 다른 점? 프로그래밍 공부를 하시면서 개발자로 취업을 하려고 하는데 과연 취업을 할 수 있을까? IT
Korean 클라우드

AWS 로그인 불가능, AWS고객 센터 이메일 문의 결과는?

AWS 고객센터 이메일 문의 솔직후기 AWS를 사용하기 위해 로그인을 하는 경우 이메일로 코드 번호를 보내지만 이메일로 받을 수 없는 상황이거나