Java 8일차 4(다운캐스팅)

2022. 11. 21. 12:53코딩배움일지/JAVA

 

public class AnimalMain {
    public static void main(String[] args) {
        Animal animal = new Animal();
        Human human = new Human();
        Tiger tiger = new Tiger();

        Animal hAnimal = human; /*형변환*/ /*업캐스팅*/
        Animal tAnimal = tiger;
        Animal [] animals = new Animal[3]; /*3개의 우리*/

        animals[0] = new Human();
        animals[1] = new Tiger();
        animals[2] = new Animal();

        for (int i =0; i < animals.length; i++){ /* animals[1] = new Tiger(); 재정의 된거만 쓰자.*/
            animals[i].move();
        }

        for (int i =0; i < animals.length; i++) {
            if(animals[i] instanceof Human){ /*Human 으로 생성된 객체가 true 면 작동. 아니면 빠잉*/
                Human h = (Human) animals[i]; /*다운캐스팅*/ /*명시해줘야 한다.*/
                h.readBooks();
            } else if (animals[i] instanceof Tiger) {
                Tiger t = (Tiger) animals[i];
                t.hunting();
            }else {
                System.out.println("다운캐스팅 불가");
            }
        }
        //int a = (int)3.14; /*다운캐스팅*/
        //double d = (double)3; /*업캐스팅*/
    }
}

 

출력

Animal 객체 생성
Animal 객체 생성
Human 객체 생성
Animal 객체 생성
Tiger 객체 생성
Animal 객체 생성
Human 객체 생성
Animal 객체 생성
Tiger 객체 생성
Animal 객체 생성
사람이 두 발로 걷습니다.
호랑이가 달립니다.
동물이 움직입니다.
사람이 책을 읽습니다.
호랑이가 사냥을 합니다.
다운캐스팅 불가

Process finished with exit code 0

 

주의점

 

Animal a = new Animal();

(Human) a = 안된다. 하지마라.

 

메모리를 실질적으로 할당한건  Animal

new Human(); -> Animal 업캐스팅 후 다운캐스팅

만든녀석으로 업캐스팅했으면 만든 녀석으로 다운캐스팅 해라

'코딩배움일지 > JAVA' 카테고리의 다른 글

Java9일차 2(추상)  (0) 2022.11.22
Java 9일차 1(업캐스팅 다운캐스팅)  (0) 2022.11.22
Java 8일차 3(업캐스팅)  (0) 2022.11.21
Java 8일차 2(상속, overiding)  (0) 2022.11.21
Java 8일차 1(상속)  (0) 2022.11.21