본문 바로가기

Programming Language/JAVA

[JAVA] 업캐스팅(Up-Casting)과 다운캐스팅(Down-Casting)

▶ 업캐스팅(Up-Casting)과 다운캐스팅(Down-Casting)

 

 

 

 

업캐스팅(Up-Casting)

: 서브 클래스 객체가 슈퍼 클래스 타입으로 변환되는것이다.

 

 

 

 

package Test;

class Parents {
	public void familyName() {
		System.out.print("이");
	}

	public void name() {
		familyName();
		System.out.println("순신");
	}
}

class Daughter extends Parents {
	public void name() {
		familyName();
		System.out.println("국주");
	}
}

class Son extends Parents {
	public void name() {
		familyName();
		System.out.println("기광");
	}
}

public class Test {

	public static void main(String[] args) {
		Parents par;
		par = new Parents();
		par.name();
		par = new Daughter();
		par.name();
		par = new Son();
		par.name();

	}

}

이번에는 Parents 클래스를 상속받고있는 Daughter클래스와 Son클래스를 부모클래스타입인 par변수에 담아줬습니다.

각각 담아주고 name메소드를 사용하면 앞에 "이"가 붙게됩니다.

그이유는 우선, 부모클래스에서 familyName()메소드를 호출해주고 값을 더해줬기에 가능했습니다.

이것도 "업캐스팅"의 예제였습니다.

 

 

 

 

 


 

 

 

 

다운캐스팅(Down-Casting)

: 슈퍼 클래스 객체가 서브 클래스 타입으로 변환되는것이다.

 

 

 

 

package Test;

class Aclass{
	public String getpwd() {
		return "A클래스";
	}
}
class PrintClass{
	public void print(Object ob) {
		Aclass aob = (Aclass)ob;  
		System.out.println(aob.getpwd());
	}
}
public class Test{
	public static void main(String[] args) {
		Aclass a = new Aclass();
		PrintClass pc = new PrintClass();
		pc.print(a);
	}

}

이번에는 다운캐스팅을 알아보겠습니다.

위소스에서 PrintClass가 A클래스를 상속하고있고, print()메소드에서 매개변수로 object클래스인 ob변수로 받습니다.

object클래스는 최상의 클래스로써, 클래스를 생성할때 object클래스를 무조건 상속받게되어있습니다.

자세한건 다음 object클래스 편에서 설명드리겠습니다.

매개변수로 받은 값을 Aclass로 형변환시켜주고 그값을 Aclass타입인 aob변수에 저장해줍니다.

그리고 출력해주면 Main메소드에서 print()메소드 호출할때 Aclass객체인 a인스턴스를 넘겨줬기에 A클래스가 출력되게 됩니다.