업캐스팅은 상속관계일때 데이터타입을 부모클래스로 선언하는 것이다.
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 UpCastingChild extends UpCastingParent{
int z;
UpCastingChild() {
x = 100;
y = 200;
z= 300;
}
@Override
public void print() {
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() {
return x - y - z;
}
public int getZ() {
return z;
}
public void setZ(int z) {
this.z = z;
}
}
public class UpCastingMain {
public static void main(String[] args) {
UpCastingParent ucp = new UpCastingChild();
// 변수는 부모클래스이므로, 부모클래스에 add 함수 이름이 있으므로,
// 함수가 실행되되, 객체(Heap 메모리)가 자식클래스이고,
// 자식 클래스가 add를 오버라이딩 했으므로,
// 자식 클래스의 함수가 호출된다.
int result = ucp.add();
System.out.println(result);
// 변수는 부모클래스이므로, 부모클래스에 있는 함수 이름만 사용이 가능!
// sub() 는 부모에는 없고, 자식에게만 있으니까 실행 못한다.
// result = ucp.sub();
}
}
자식 클래스인 UpCastingChild를 부모 클래스로 형변환하고
오버라이딩한 add함수를 실행한다.
오버라이딩한 결과로 600이 나온다.
sub함수는 부모에는 없고 자식에게만 있어서 실행 못한다.
'자바' 카테고리의 다른 글
자바 추상클래스 용도와 사용방법 (0) | 2022.07.06 |
---|---|
자바 다운캐스팅이란? (0) | 2022.07.05 |
자바 super 부모생성자 호출 (0) | 2022.07.05 |
자바 super 키워드 (0) | 2022.07.04 |
자바 메소드 오버라이딩이란? (0) | 2022.07.04 |