Down Casting 상속받는 자식 클래스로 캐스팅
1. Casting(캐스팅) 이란?
캐스팅은 타입을 변환하는 것으로
형변환이라고도 합니다.
자바의 상속 관계에 있는
부모 클래스와 자식 클래스간에
형 변환이 가능합니다.
2. Down Casting(다운 캐스팅)이란?
다운캐스팅은 자신의 고유한
특성을 잃은 서브 클래스의 객체를
다시 복구 시켜주는 것입니다.
상속받은 자식 클래스로 캐스팅!
Up Casting(업 캐스팅) 된 것을 다시
원상태로 돌립니다.
부모 클래스와 자식 클래스가
상속이 되어있는
상속 관계에서만 가능합니다.
상위 클래스(부모 클래스) Animal
public class Animal {
private String name;
public void cry() {
System.out.println(name + "가 소리를 낸다.");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
하위 클래스(자식 클래스) Dog
public class Dog extends Animal{
// String name;
// Animal 클래스의 함수도 모두 상속받는다.
@Override
public void cry() {
super.cry();
System.out.println(getName() + "가 멍멍하고 짓습니다.");
}
void run() {
System.out.println(getName() + "가 달린다.");
}
}
하위 클래스(자식 클래스) Cat
public class Cat extends Animal {
// private String name
// Animal 클래스의 함수도 모두 상속받는다.
@Override
public void cry() {
// TODO Auto-generated method stub
super.cry();
System.out.println("냥냥~~");
}
public void grooming() {
System.out.println("그루밍 한다.");
}
}
public class AnimalAction {
// Animal 클래스를 함수의 파라미터로 쓸 수 있다.
// 즉, Animal 클래스의 객체가 올 수 있다.
// 함수의 파라미터를 최상위 클래스로 받아오면
// 객체를 animal로 인식하기때문에 다 받아올 수 있다.
// Animal animal = new Dog();
// Animal animal = new Cat();
void action(Animal animal) {
animal.cry();
// DownCasting이란 상속받은 자식클래스로 캐스팅하는 것. (상속관계이어야만 함)
// animal의 instance(객체가 Heap 메모리에 올라온 상태)가
// Dog면 Dog로바꾸고 run() 함수를 실행
// Cat이면 Cat으로 바꾸고 grooming을 실행해라.
if(animal instanceof Dog) {
((Dog)animal).run();
} else if(animal instanceof Cat) {
((Cat)animal).grooming();
}
}
}
// 결과
강아지가 소리를 낸다.
강아지가 멍멍하고 짓습니다.
강아지가 달린다.
------------------------------
키티가 소리를 낸다.
냥냥~~
그루밍 한다.
상위 클래스를 extends 하지 않습니다.
Up casting(업 캐스팅)이 된
상태에서는 자식 클래스에 있는
함수를 사용할 수 없습니다.
따라서 Down Casting(다운 캐스팅)으로
자식 클래스의 객체를 복구합니다.
((Dog)animal).run()
((Cat)animal).grooming()
힐링아무의 코딩일기!!
'Back End > JAVA' 카테고리의 다른 글
Java/ UpCasting 데이터타입을 부모 클래스로 선언 (0) | 2022.07.05 |
---|
댓글