업캐스팅이란 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에서 이용해 사용하기 위함이다.
즉, 객체지향적인 프로그램을 만들고 편의성을 위해 업/다운 캐스팅을 사용하는 것 이다.
자바 메모리 구조 (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 |