본문 바로가기

프로그래밍언어/Java

[Java 중급] Object 다형성

Object 다형성


Object는 모든 클래스의 부모 클래스이다. 따라서 모든 Object는 모든 객체를 참조할 수 있다.

 

 

예제 


Dog, Car 클래스를 만들어보자. 두 클래스는 서로 아무런 관려이 없다. 둘 다 부모가 없으므로 Object를 자동으로 상속받는다. 

 

Car.java

public class Car {
    public void move() {
        System.out.println("자동차 이동");
    }
}

 

 

Dog.java

public class Dog {
    public void sound() {
        System.out.println("멍멍");
    }
}

 

ObjectPolyExample.java

public class ObjectPolyExample1 {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Car car = new Car();

        action(dog);
        action(car);
    }

    private static void action(Object obj) {
       // obj.sound();// 컴파일 오류
        // obj.move(); // 컴파일 오류 
        
        // 객체에 맞는 다운캐스팅 필요
        if(obj instanceof Dog dog) {
            dog.sound();
        } else if(obj instanceof Car car) {
            car.move();
        }
    }
}

=> action 메서드는 Object 타입의 매개변수를 사용한다. Object는 모든 객체의 부모이므로 어떤 객체든지 인자로 전달할 수 있다. 

그러나 obj.sound()를 호출하면 오류가 발생한다. 매개변수인 obj는 Object 타입이기 때문이다. 따라서 sound()를 호출하고 싶다면 다운캐스팅해야 한다. 

 

 

* 인프런 '김영한의 실전 자바 - 중급 1편'을 참고하여 작성하였습니다. 

'프로그래밍언어 > Java' 카테고리의 다른 글