본문 바로가기

Language/JAVA

JAVA - Up Casting

반응형
Up Casting

 

 

 

하위클래스

public class UpCastingChild extends UpCastingParent {
	
//	int x;
//	int y;
	// UpCastingParent의 함수들도 상속 받았다.
	
	int z;
	
	public UpCastingChild() {
		x = 100;
		y = 200;
		z = 300;
	}

	@Override
	public void print() {
		// TODO Auto-generated method stub
		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() {
		System.out.println("Child의 sub() 함수 호출");
		return x - y - z;
	}

	public int getZ() {
		return z;
	}

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

 

 

상위클래스

 

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 UpCastingMain {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//UpCasting이란 데이터타입을 부모클래스로 선언하는 것(상속관계이어야만 함)
		
		//UpCasting 클래스의 객체를 생성할 때,
		// 자동으로 x 는 10, y 는 20이 저장되도록 하시오
		// 단 생성자의 파라미터는 아무것도 안씁니다.
		UpCastingParent up = new UpCastingParent();
		
		up.print();
		
		System.out.println("----------------------");
		
		int result = up.add();
		
		System.out.println(result);
		
		System.out.println("----------------------");
		
		// UpCastingChild 클래스의 객체 생성시
		// 생성자의 파라미터는 아무것도 없이,
		// x = 100, y = 200, z = 300으로 초기화하는 코드를 작성하세요.
		
		UpCastingChild upc = new UpCastingChild();
		
		upc.print();
		
		System.out.println("----------------------");
		
		int result2 = upc.add();
		
		System.out.println(result2);
		
		System.out.println("----------------------");
		
		int result3 = upc.sub();
		
		System.out.println(result3);
		
		System.out.println("----------------------");
		
		// 상속관계의 클래스에대한 캐스팅
		
		UpCastingParent ucp = new UpCastingChild();
		// 위 코드를 보면 변수는 상위클래스이고, 객체는 하위클래스이다.
		// 상위클래스가 하위클래스를 가리키는 것을 업 캐스팅이라고 한다.
		// 이처럼 상속관계의 객체를 다르게 사용하는 것이 JAVA는 가능하다.
		result = ucp.add();
		
		System.out.println(result);
		// 변수는 상위클래스이므로 상위클래스에 add 함수가 있으므로
		// 함수가 실행되되 객체(Heap 메모리)가 하위 클래스이고
		// 자식 클래스가 add를 오버라이딩 했으므로 하위클래스의 함수가 호출된다.
		
		
//		ex) result = ucp.sub();
		// 업 캐스팅을 통해 상위클래스의 함수를 사용할 수 있지만
		// 변수는 상위클래스이므로 상위클래스에 있는 함수만 사용 가능하다.
		// sub()는 상위클래스에는 없고, 하위클래스에만 있기때문에 실행할 수 없다.
		

		
	}

}

 

 

반응형

'Language > JAVA' 카테고리의 다른 글

JAVA - Abstract (추상클래스)  (0) 2022.07.06
JAVA - DOWN CASTING  (0) 2022.07.05
JAVA - 부모(상위)생성자 호출을 위한 super 사용법  (0) 2022.07.05
JAVA - EXTENDS (상속)  (0) 2022.07.04
JAVA - Getter / Setter  (0) 2022.07.04