on
자바의 형변환(업캐스팅, 다운캐스팅)
자바의 형변환(업캐스팅, 다운캐스팅)
자바의 레퍼런스 간의 형 변환
1. 업캐스팅 이란?
가. 업캐스팅 전제조건은 반드시 사전에 부모, 자식 간의 상속관계를 만들어야 한다. 상속관계에서만 업캐스팅을 허용한다.
나. 업캐스팅은 상속관계에서 자식클래스형을 부모클래스로 올리는 것을 뜻한다.
다. 업캐스팅 된 이후에 오버라이딩 된 메서드를 호출하면 자식클래스의 오버라이딩 된 메서드를 호출한다.(자바문법에서 중요)
★ 레퍼런스 자료형이란
1. 자바의 기본자료형 8개를 제외한 자료형을 레퍼런스자료형이라 한다.
2. 레퍼런스 자료형 종류는 배열형, 클래스형, 인터페이스 형이 있다.
<업캐스팅 예제>
package test; class Father120{ public void f120(){ System.out.println("부모클래스 f120() 메서드"); } } class Son120 extends Father120{ public void s120(){ System.out.println("자식클래스 s120()"); } public void f120(){ System.out.println("오버라이딩 된 메서드"); } } public class UpCast01 { public static void main(String[] args) { Son120 s=new Son120(); s.f120();//오버라이딩 된 메서드 호출 s.s120();//자식클래스에서 정의된 메서드 호출 System.out.println("---------------------------------"); Father120 f=null;//부모클래스 레퍼런스형 선언 f=s;//업캐스팅 다르게하면 Father120 f=new Son120(); f.f120();//업캐스팅 후 오버라이딩 된 메서드 호출 } }
2. 자바의 다운캐스팅
가. 다운캐스팅은 부모클래스형을 자식클래스 형으로 내리는 것을 말한다.
나. 다운캐스팅 전제조건
- 반드시 상속관계여야 한다.
- 사전에 업캐스팅 한 것에 한해서만 다운캐스팅을 허용한다.
다. 다운캐스팅은 두 단계에 의해서 검증한다.
- 컴파일 단계
- 실행 단계
- 업캐스팅을 하지 않고 다운캐스팅을 하면 실행시 예외 오류가 발생한다.
- 업캐스팅을 한 후 원래 업캐스팅 하기 전 자신의 자식클래스 형으로 다운캐스팅을 한 것에 한해서만 다운캐스팅을 허용한다.
<다운캐스팅 예제>
package test; class Father132{ public void f132(){ System.out.println("부모클래스 f132()"); } } class Son132 extends Father132{//class 자식클래스 extends 부모클래스로 상속을 받는다. public void f32(){ System.out.println("오버라이딩 된 메서드 호출"); } public void s132(){ System.out.println("자식클래스 메서드 호출"); } } public class DownCast01 { public static void main(String[] args) { Father132 f=new Son132();//업캐스팅 f.f132();//오버라이딩 된 메서드 호출 System.out.println("----------------------------------"); Son132 s=(Son132)f;//부모클래스 f를 자식클래스형으로 내리는 다운캐스팅 (Son132)는 캐스팅연산자이다. s.f132(); s.s132(); } }
from http://betterwave.tistory.com/22 by ccl(A) rewrite - 2021-12-05 00:28:10