학습(구)/Java(구)
타입 변환과 다형성 구현
잉아당
2021. 3. 18. 00:19
728x90
타입 변환
# 자동 변환
- 연산을 위해 기본 타입을 일치 시키며 컴파일러가 수행합니다.
- 조상 타입 혹은 인터페이스 타입에 자식 타입을 대입 할 경우 자동으로 업 캐스팅을 수행합니다.
- 기본 타입에서 Wrapper 타입(클래스 타입) 으로 변환은 boxing이라 하며 실체를 사용할 때 변환합니다.
- Wrapper타입에서 기본 타입으로 변환은 unboxing이라 하며 값을 사용할 때 변환 합니다.
# 강제 변환
- 캐스트 연산자 사용에 의한 강제 변환 입니다.
- 참조 타입에서 캐스팅을 잘 못할 경우 ClassCastException이 발생할 수 있기 때문에 instanceof 연산자를 사용해 미리 확인 후 사용하는 것이 좋습니다.
- 캐스팅을 성능을 저하 시키기 때문에 꼭 필요한 경우를 제외하고는 제너릭 타입을 사용하는 것이 좋습니다.
다형성
- 하나의 문장으로 서로 다른 여러가지 기능을 수행하는 성질을 말합니다.
- 조상이나 인터페이스 타입에 후손 타입을 대입하여 업캐스팅 시키고 해당 타입의 메서드를 호출하면 오버라이딩(재정의)된 메서드가 런타임 때 동적 바인딩 되어 대입된 각 타입에 따라 여러기능을 수행할 수 있습니다.
- 다형성을 통해 제어의 역전(IoC: Inversion of Control)을 실현하는데 외부 라이브러리 코드(프레임워크)가 동작되면서 프로그래머가 작성한 코드를 호출하는 것을 말합니다.