모래블로그

[Java] Object 클래스 본문

카테고리 없음

[Java] Object 클래스

별모래 2024. 7. 16. 07:45
728x90

 

Object 클래스

자바에서 모든 클래스의 최상위 부모 클래스항상 Object 클래스이다.

 

 

// 부모가 없으면 묵시적으로 Object 클래스를 상속받는다.
public class Parent {
  public void parentMethod() {
    System.out.println("Parent");
  }
}
 

위 코드는 아래 코드와 같다.

// extends Object 추가
public class Parent extends object {
    public void parentMethod() {
    System.out.println("Parent");
  }
}
 

즉, 클래스에 상속 받을 부모 클래스가 없으면 묵시적으로 Object 클래스를 상속받는다.

-> 쉽게 이야기해서, 자바가 extends Object 코드를 넣어준다. extends Object는 생략하는 것을 권장함

 

public class Child extends Parent {
  public void childMethod {
    System.out.println("Child");
  }
}
 

클래스에 상속 받을 부모 클래스를 명시적으로 지정하면 Object를 상속 받지 않는다.

-> 쉽게 이야기해서 이미 명시적으로 상속했으므로 자바가 extends Object 코드를 넣지 않는다.

묵시적(Implicit) vs 명시적(Explicit)

묵시적 : 개발자가 코드에 직접 기술하지 않아도 시스템 or 컴파일러에 의해 자동으로 수행되는 것

명시적 : 개발자가 코드에 직접 기술해서 작동하는 것

 

 

예시

public class ObjectMain {
  public static void main(String[] args) {

    Child child = new Child();
    child.childMethod();
    child.parentMethod();

    // toString()은 Object 클래스의 메서드
    String string = child.toString();
    System.out.println(string);
  }
}
 

toString()Object 클래스의 메서드이고, 객체의 정보를 제공한다.

 

결과

 

 

toString을 출력했을 때, 클래스명과 인스턴스 정보를 출력해줌

 

 

실행 결과 그림

ParentObject묵시적으로 상속받았으므로 메모리에도 함께 생성된다.

 

 
대표사진 삭제

사진 설명을 입력하세요.

 

  1. child.toString()을 호출
  2. 먼저 본인의 타입인 Child에서 toString()을 찾는다. 없으므로 부모 타입으로 올라가서 찾는다.
  3. 부모 타입인 Parent에서 찾는다. 없으므로 부모 타입으로 올라가서 찾는다.
  4. 부모 타입인 Object에서 찾는다. ObjecttoString()이 있으므로 이 메서드를 호출한다.

 

∴ 자바에서 모든 객체의 최종 부모는 Object 이다.

 

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

모든 클래스가 Object 클래스를 상속 받는 이유는 다음과 같다.

  • 공통 기능 제공
  • 다형성의 기본 구현

 

1. 공통 기능 제공

객체의 정보를 제공하고, 이 객체가 다른 객체와 같은지 비교하고, 객체가 어떤 클래스로 만들어졌는지 확인하는 기능은 모든 객체에게 필요한 기본 기능이다. 이런 기능을 객체 만들 때마다 항상 새로운 메서드를 정의해서 만들어야 한다면 번거롭고, 개발자마다 서로 다른 이름의 메서드를 만들어서 일관성이 없어질 것이다.

 

Object모든 객체에 필요한 공통 기능을 제공한다.

Object는 최상위 부모 클래스이기 때문에 모든 객체는 공통 기능을 편리하게 제공(상속) 받을 수 있다.

 

Object가 제공하는 기능

  • 객체의 정보를 제공하는 toString()
  • 객체의 같음을 비교하는 equals()
  • 객체의 클래스 정보를 제공하는 getClass()
  • 기타 여러가지 기능

 

따라서 프로그래밍이 단순해지고, 일관성을 가진다.

 

2. 다형성의 기본 구현

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

Object 클래스는 다형성을 지원하는 기본적인 메커니즘을 제공한다. 모든 자바 객체는 Object 타입으로 처리될 수 있으며, 이는 다양한 타입의 객체를 통합적으로 처리할 수 있게 해준다.

즉, Object는 모든 객체를 다 담을 수 있으며, 타입이 다른 객체들을 어딘가에 보관해야 한다면 바로 Object에 보관하면 된다.

 

728x90