Back End/JAVA

Java/ UpCasting 데이터타입을 부모 클래스로 선언

healingmau 2022. 7. 5. 17:31


UpCasting 데이터타입을 부모 클래스로 선언

 

1. Casting(캐스팅) 이란?

캐스팅은 타입을 변환하는 것으로

형변환이라고도 합니다.

 

자바의 상속 관계에 있는 

부모 클래스와 자식 클래스간에

형 변환이 가능합니다.

 

2. UpCasting 이란?

업캐스팅은 데이터 타입

부모 클래스로 선언하는 것입니다.

 

업캐스팅은 부모 클래스와

자식 클래스가 상속이 되어있는

상속 관계에서만 가능합니다.

 

 

// 부모클래스
// UpCastingParent.java

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;
	}
	
}

 

// 자식클래스
// UpCastingChild.java


public class UpCastingChild extends UpCastingParent {

	// int x;
	// int y;
	// UpCastingParent의 함수들도 상속 받았다.

	int z;

	public UpCastingChild() {
		x = 100;
		y = 200;
		z = 300;
	}

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

	@Override
	public int add() {
		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 UpCastingChild extends UpCastingParent

 

부모 클래스를 상속 받을경우

extends 를 사용합니다.

 

@ Override 는 메소드 오버라이딩

(Method Overriding)을 의미합니다.

 

 

// 실행 파일
// UpCastingMain.java

public class UpCastingMain {

	public static void main(String[] args) {
		
		UpCastingParent ucp = new UpCastingChild();
		
		// 변수는 부모클래스이며, 부모클래스에 add 함수 이름이 있다.
		// 함수가 실행되는 객체가 자식 클래스 이고
		// 자식 클래스가 add를 오버라이딩 했으므로
		// 자식 클래스의 함수가 호출된다.
		result = ucp.add();
		System.out.println(result);
		
		// 변수는 부모 클래스 이므로, 부모 클래스에 있는 함수 이름만 사용이 가능하다
		// sub() 는 부모에는 없고 자식에게만 있으니깐 실행 못한다
		// result = ucp.sub();
	}

}

 

힐링아무의 코딩일기 힐코딩!!