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' 카테고리의 다른 글
[Java 중급] toString() (0) | 2024.07.31 |
---|---|
[Java 중급] Object 배열 (0) | 2024.07.31 |
[Java 중급] Object 클래스 (0) | 2024.07.30 |
[Java 중급] java.lang 패키지 (0) | 2024.07.29 |
[Java 기본] OCP(Open-Closed Principle) 원칙 (0) | 2024.07.26 |