언어/자바

다운케스팅, 다형성

공부하고 기록하고 다시보는 블로그 2025. 6. 2. 17:42
// Call By reference
// 부모 클래스 하나로 다 받는다. 매개변수에다가 다형성을 적용
// 오버라이드도 아니고, 매개변수가 다르다. 매개변수가 다른 매서드를 여러개 만들면 안된다.

public static void moveAnimal(_05_Animal animal) {
//System.out.println(animal);
animal.move();


if(animal instanceof _05_Human) {
// 다운케스팅
_05_Human test = (_05_Human)animal;
test.readBook();
} else if(animal instanceof _05_Tiger) {
_05_Tiger test = (_05_Tiger)animal;
test.hurting();
} else if(animal instanceof _05_Eagel) {
_05_Eagel test = (_05_Eagel)animal;
test.flying();
}

}


// 자식으 갯수만큼 만들어 내야한다.


// // Call By reference
// public static void moveAnimal(_05_Human anmal) { // _05_Human animal2 = new _05_Human();
// System.out.println(anmal);
// anmal.move();
// }
//
// // Call By reference
// public static void moveAnimal(_05_Tiger anmal) { // _05_Tiger animal3 = new _05_Tiger();
// System.out.println(anmal);
// anmal.move();
// }
//
// // Call By reference
// public static void moveAnimal(_05_Eagel anmal) { // _05_Eagel animal4 = new _05_Eagel();
// System.out.println(anmal);
// anmal.move();
// }