Java

[인프런] Object 클래스

sejin2 2024. 6. 2. 17:56

자바에서 모든 클래스의 최상위 부모 클래스는 Object 클래스이다.
부모가 없을 경우 묵시적으로 Object 클래스를 상속받는다. ( extends Object 가 있는 것과 같다. )

 

묵시적 ( Implicit ) : 개발자가 직접 기술하지 않아도 시스템 또는 컴파일러에 의해 자동으로 수행되는 것을 의
명시적 ( Explicit ) : 개발자가 직접 기술해서 작동하는 것을 의미

 

자바에서 Object 클래스가 최상위 부모 클래스인 이유

  • 공통 기능 제공
    • 객체의 정보를 제공하고, 이 객체가 다른 객체와 같은지 비교하고, 객체가 어떤 클래스로 만들어졌는지 확인하는 기능은 모든 객체에게 필요한 기능이다. 이렇게 모든 객체에 필요한 공통 기능을 제공하여 모든 객체에서 해당 기능을 상속받아 사용할 수 있다.

      • 객체의 정보를 제공하는 toString(  )
      • 객체의 같음을 비교하는 equals(  )
      • 객체의 클래스 정보를 제공하는 getClass(  )
      • 기타 
  • 다형성의 기본 구현
    • Object는 모든 클래스의 부모 클래스로 모든 객체를 참조할 수 ( 다 담을 수 )  있다.
    • 타입이 다른 객체들을 어딘가에 보관해야 한다면 Object 클래스에 보관할 수 있다. 

 

Object 다형성

 

Object는 모든 객체의 부모이므로 어떤 객체든지 다 담을 수 있다. Object를 통해 전달받은 객체를 호출하려면 각 객체에 맞는 다운캐스팅 과정이 필요하다.

다형성을 제대로 활용하기 위해서는 다형적 참조와 메서드 오버라이딩을 함께 사용해야 한다.
Object는 하위 클래스의 메서드가 정의되어 있지 않기 때문에 메서드 오버라이딩을 활용할 수 없으므로 각 객체의 기능을 호출하려면 다운 캐스팅을 해야 한다. 따라서 다형성을 활용하기에 Object에는 한계가 있다. 

 

Object 배열

Object 타입을 사용하여 모든 객체를 담을 수 있는 배열을 만들 수 있다.

 

size(  ) 메서드는 배열에 담긴 객체의 수를 세는 역할을 한다.

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


Object 타입의 배열은 모든 객체를 다 담을 수 있으므로 새로운 클래스가 추가되거나 변경되어도 이 메서드를 수정하지 않아도 된다. 

 

 

 

 

 

공부 내용: [인프런] 김영한의 실전 자바 - 중급 1편

 

 

 

'Java' 카테고리의 다른 글

[인프런] equals( )  (0) 2024.06.02
[인프런] toString( )  (0) 2024.06.02
[인프런] java.lang 패키지  (0) 2024.06.02
[인프런] 객체 지향  (0) 2024.05.28
[인프런] 인터페이스  (0) 2024.05.28