Skip to Content
Suffering builds character

6. Object 클래스

1. Object 클래스

Object 클래스는 모든 클래스의 최상위 클래스를 의미, 이러한 Object 클래스는 java.lang 패키지에서 제공

이러한 Object 클래스는 자바 언어(JDK)에서 기본적으로 제공하는 내장 라이브러리 클래스들뿐만 아니라, 개발자가 직접 작성하는 클래스까지 자바에서 작성하는 모든 클래스들의 최상위 클래스이기 때문에 자동으로 상속(inheritance)이 이루어짐

Object 클래스를 확장한 Animal 클래스

Animal.java
class Animal { // extends Object 가 생략되어 있음 // ... }

→ 개발자가 직접 작성하지 않아도 자동으로 상속됨

Animal 클래스를 확장한 Animal 클래스

Dog.java
class Dog extends Animal { // ... }

→ 상위 클래스로 다른 클래스를 상속받아도 상위 클래스가 Object 클래스를 상속받았기 때문에 Dog도 Object 클래스의 특성을 물려받음

1-1. 정리

  1. 자바에서 모든 클래스들은 Object 클래스로부터 벗어나 독립적으로 존재할 수 없음
  2. 다른 클래스로부터 상속 받지 않은 모든 클래스들은 자동으로 Object 클래스로부터 상속받게됨

Object

2. Object 클래스의 효용

이러한 Object 클래스는 모든 클래스들이 개발 과정에서 사용할 수 있는 여러 메서드들을 제공하고 있는데, 그 중 대표적인 것이 toString()

Object 클래스에는 toString() 이나 equals()와 같은 모든 인스턴스가 가져야 할 기본적인 몇 가지의 메서드가 정의되어 있음

3. Object 클래스는 상속 개념이 적용된 실제 예시

이러한 Object 클래스는 상속 개념이 적용된 대표적인 예시

Mouse 클래스

Mouse.java
class Mouse { int age; public Mouse(int age) { this.age = age; } }

Main 클래스

Main.java
public class Main { public static void main(String[] args) { Mouse jerry = new Mouse(5); System.out.println(jerry); System.out.println(jerry.toString()); } }

실행 결과

dev.syntax.oop.Mouse@1basc2as dev.syntax.oop.Mouse@1basc2as

참조 변수 jerry를 그대로 출력하든, jerry.toString()를 통해 Mouse 클래스의 상위 클래스인 Object 클래스가 가진 toString()을 호출할 경우 패키지경로 포함 클래스 풀네임@해시값이 출력됨

위와 같이 toString() 호출 시 패키지경로 포함 클래스 풀네임@해시값 이 나오는 이유는 Object 클래스의 toString()이 호출되었기 때문

Object 클래스 내 toString() 구현 코드

Object.java
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
Last updated on