업캐스팅은 상속관계일때 데이터타입을 부모클래스로 선언하는 것이다.

public class UpCastingParent {
	
	int x;
	int y;
	
	public UpCastingParent() {
		x = 10;
		y = 20;
	}
	
	public void print() {
		System.out.println(x + " , " + y);
	}
	
	public int add() {
		System.out.println("Parent 의 add() 함수 호출");
		return x + y;
	}
}
public class UpCastingChild extends UpCastingParent{
	
	int z;
	
	UpCastingChild() {
		x = 100;
		y = 200;
		z= 300;
	}

	@Override
	public void print() {
		
		System.out.println(x + " , " + y + " , " + z);
	}

	@Override
	public int add() {
		// TODO Auto-generated method stub
		System.out.println("Child 의 add() 함수 호출");
		return x + y + z;
	}
	
	public int sub() {
		return x - y - z;
	}

	public int getZ() {
		return z;
	}

	public void setZ(int z) {
		this.z = z;
	}
}
public class UpCastingMain {

	public static void main(String[] args) {

		UpCastingParent ucp = new UpCastingChild();
		
		// 변수는 부모클래스이므로, 부모클래스에 add 함수 이름이 있으므로,
		// 함수가 실행되되, 객체(Heap 메모리)가 자식클래스이고,
		// 자식 클래스가 add를 오버라이딩 했으므로,
		// 자식 클래스의 함수가 호출된다.
		int result = ucp.add();		
		System.out.println(result);
		
		// 변수는 부모클래스이므로, 부모클래스에 있는 함수 이름만 사용이 가능!
		// sub() 는 부모에는 없고, 자식에게만 있으니까 실행 못한다.
//		result = ucp.sub();
	}

}

자식 클래스인 UpCastingChild를 부모 클래스로 형변환하고

오버라이딩한 add함수를 실행한다.

오버라이딩한 결과로 600이 나온다.

sub함수는 부모에는 없고 자식에게만 있어서 실행 못한다.

'자바' 카테고리의 다른 글

자바 추상클래스 용도와 사용방법  (0) 2022.07.06
자바 다운캐스팅이란?  (0) 2022.07.05
자바 super 부모생성자 호출  (0) 2022.07.05
자바 super 키워드  (0) 2022.07.04
자바 메소드 오버라이딩이란?  (0) 2022.07.04

+ Recent posts