Home > Java > Java > ☕️[Java] Object 배열

☕️[Java] Object 배열
Java Programming Language Backend

☕️[Java] Object 배열.

1️⃣ Object 배열.

  • 'Object' 는 모든 타입의 객체를 담을 수 있습니다.
    • 따라서 'Object[]' 을 만들면 세상의 모든 객체를 담을 수 있는 배열을 만들 수 있습니다.
package langReview.object.poly;

public class ObjectPolyExample2 {

    public static void main(String[] args) {
        Dog dog = new Dog();
        Car car = new Car();
        Object object = new Object(); // Object 인스턴스도 만들 수 있습니다.

        Object[] objects = { dog, car, object };

        size(objects);
    }

    private static void size(Object[] objects) {
        System.out.println("전달된 객체의 수는 : " + objects.length);
    }
}

실행 결과

전달된 객체의 수는 : 3
Object[] objects = { dog, car, object };
// 쉽게 풀어서 설명하면 다음과 같이 코드를 작성할 수 있습니다.
Object objects[0] = new Dog();
Object objects[1] = new Car();
Object objects[2] = new Object();
  • 'Object' 타입을 사용한 덕분에 세상의 모든 객체를 담을 수 있는 배열을 만들 수 있게 되었습니다.

size() 메서드

  • 'size(Object[] objects)' 메서드는 배열에 담긴 객체의 수를 세는 역할을 담당합니다.
  • 이 메서드는 'Object' 타입만 사용합니다.
    • 'Object' 타입의 배열은 세상의 모든 객체를 담을 수 있기 때문에, 새로운 클래스가 추가되거나 변경되어도 이 메서드를 수정하지 않아도 됩니다.
      • 지금 만든 'size()' 메서드는 자바를 사용하는 곳이라면 어디서든지 사용될 수 있습니다.

2️⃣ Object가 없다면 어떻게 될까?

  • 'void actioon(Object obj)' 과 같이 모든 객체를 받을 수 있는 메서드를 만들 수 없게됩니다.
  • 'Objectp[] objects' 처럼 모든 객체를 저장할 수 있는 배열을 만들 수 없게됩니다.
  • 🤔 직접 구현하면 되지 않을까?
    • 'Object' 가 없어도 직접 'MyObject' 와 같은 클래스를 만들고 모든 클래스에서 직접 정의한 'MyObject' 를 상속 받으면 됩니다.
      • 🙋‍♂️ 하지만 하나의 프로젝트를 넘어 전세계의 모든 개발자가 비슷한 클래스를 만들 것이고, 서로 호환되지 않는 수많은 'XxxObject' 들이 넘쳐나는 현상이 생길 것입니다.