JAVA 프로그래밍

[JAVA] 풀스택 개발자 부트캠프 011일차 ③ over ride 예시

selfdailycoding 2025. 1. 10. 11:30
package main;

import animal.Animal;
import animal.Cat;
import animal.Dog;

public class MainClass {

    public static void main(String[] args) {

        // Dog + Cat = 10
        Dog []dogArr = new Dog[10];
        Cat []catArr = new Cat[10];
        dogArr[0] = new Dog();
        catArr[0] = new Cat();
        catArr[1] = new Cat();
        dogArr[1] = new Dog();

        // Animal ani = new Dog();
        // Animal ani = new Cat();

        Animal []animal = new Animal[10];
        animal[0] = new Dog();
        animal[1] = new Cat();
        animal[2] = new Cat();
        animal[3] = new Dog();

        /*
        for (Animal a : animal){
            if(a != null){
                a.speech();
            }
        }
         */

        /*
        Animal ani = new Dog();
        ani.speech();

        // cast(강제) 자료형 변환
        // double d = 123.456;
        // int number = (int)d;

        //Dog d = (Dog)ani;
        //d.dog_method();

        // instanceof : 어떠한 object로 생성이 되었는지 판단
        if(ani instanceof Dog){
            System.out.println("Dog로 생성");
        }
        */

        for (Animal a : animal){
            if(a != null){
                a.speech();     // Over Ride 된 메서드

                if(a instanceof Dog){
                    Dog d = (Dog)a;
                    d.dog_method();
                } else if (a instanceof Cat) {
                    ((Cat)a).cat_method();
                }
            }
        }

        Object[] ani = new Animal[10];
        ani[0] = new Dog();
        ani[1] = new Cat();
        ani[2] = new Cat();
        ani[3] = new Dog();

        Object[] obj = new Object[3];

        obj[0] = new String("world");
        obj[1] = new Dog();
        obj[2] = 123;   // <- Integer
    }
}





 


 

package animal;

public class Animal {

    public void speech(){
        System.out.println("Animal speech()");
    }
}

package animal;

public class Cat extends Animal{
    @Override
    public void speech() {
        System.out.println("야옹야옹");
    }
    public void cat_method(){
        System.out.println("저는 야옹이에요");
    }
}

package animal;

public class Dog extends Animal{
    @Override // <- namespace(주석문)
    public void speech() {
        System.out.println("멍멍");
    }
    public void dog_method(){
        System.out.println("난 강아지다");
    }
}