상세 컨텐츠

본문 제목

업캐스팅(Up Casting) / 다운캐스팅 (Down Casting)

Coding (코딩)/Java (자바)

by 매일매일 배우는 개발자 2020. 10. 15. 13:00

본문

728x90

캐스팅이란 형변환을 의미합니다

 

업캐스팅이란 SubClass에서 SuperClass로의 형 변환을 의마합니다. 즉, SubClass를 SuperClass처럼 사용할 수 있게 하는것 입니다.

 

다운캐스팅이란 SubClass에서 SuperClass로의 형변환을 의미하여, 반드시 업캐스팅 한이후에 다운캐스팅으로 사용할 수 있습니다. 즉, 자식객체를 부모객체처럼 쓸수 있는것 입니다.

 

(반드시 SubClass는 SuperClass를 상속받아야 합니다.)

 

※ 사용방법

     업캐스팅 - SuperClass (SuperClass명) = new SubClass(); 

     다운캐스팅 - SubClass (SubClass명) = (SubClass) SuperClass명;

 

* 다운캐스팅을 할떄에는 명시적으로 SubClass를 우변에 지정해 줘야 된다

 

 

 

 

아래의 예제를 보며 이해하자!!


public class Parent {//SuperClass
	
	public void terran() { //terran 메소드
		System.out.println("스타");
	}

}




public class Child extends Parent { //Child는 Parent를 상속받았다
	
	public void a() {//a메소드
		System.out.println("테란");
	}
	public void b() {//b메소드
		System.out.println("저그");
	}
	public void c() {//c메소드
		System.out.println("프로토스");
	}
	

}


public class Casting {
	
	public static void main(String[] args) {
	
		Parent p = new Child(); //업캐스팅 발생
		Child c = (Child) p; // 다운캐스팅 발생
		
		c.a(); //결과는 테란
		c.b(); //결과는 저그
		c.c(); //결과는 프로토스
	
		
	}
	
}

 

그럼 객체지향 프로그램인 자바에서 업캐스팅 / 다운캐스팅을 왜 쓸까?

 

다형성 (Polymorphism) 때문이다. 

자바에는 Spring Framework등 이미 만들어 놓은 여러가지 객체들이 있는데 이것을 간단히 SubClass에서 이용해 사용하기 위함이다.

 

즉, 객체지향적인 프로그램을 만들고 편의성을 위해 업/다운 캐스팅을 사용하는 것 이다.

 

 

 

 

 

 

 

728x90

'Coding (코딩) > Java (자바)' 카테고리의 다른 글

자바 메모리 구조 (Java Memory structure)- Stack Memory  (0) 2021.03.29
접근 제어자 (modifier)  (0) 2020.09.16
오버로딩 (Overloading)  (0) 2020.09.15
생성자 (Constructor)  (0) 2020.09.14
오버라이딩 - Overriding  (0) 2020.09.11

관련글 더보기