Post

[JAVA] Object 클래스

[JAVA] Object 클래스

java.lang 패키지란?

  • 자바 언어의 기본 클래스들이 포함된 패키지
  • 자동 import됨 → 따로 import java.lang.* 안 써도 됨
  • 대표 클래스: Object: 모든 자바 객체의 부모 클래스 String: 문자열 System: 시스템 관련된 기본 기능 Integer Long Double: 래퍼 타입, 기본형 데이터 타입을 객체로 만든 것 Class : 클래스 메타 정보

Object 클래스란?

  • 모든 자바 클래스의 최상위 부모
  • 클래스에 extends 안 붙이면 자동으로 extends Object 적용됨
  • 공통 기능 제공, 다형성 구현을 위한 기반

toString()

  • 객체 정보를 문자열로 반환
  • 기본은 클래스명@참조값 형식
  • 직접 오버라이딩해서 meaningful한 정보 제공 가능
1
2
3
4
@Override
public String toString() {
    return "Dog{name='" + name + "', age=" + age + "}";
}

equals(Object obj)

  • == → 동일성 비교 (참조값 비교)
  • equals() → 동등성 비교 (값 비교)
  • 오버라이딩 필수
1
2
3
4
5
6
7
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    User user = (User) o;
    return Objects.equals(id, user.id);
}

Object 다형성

  • 모든 객체를 Object 타입으로 받을 수 있음
  • 다양한 타입을 한 배열에 넣을 수 있음
1
Object[] arr = { new Dog(), new Car(), new Object() };
  • 단점: 개별 기능 (sound()move())은 다운캐스팅 필요

자바 객체지향의 기본은 Object에서 시작됨

  • toString()equals() 오버라이딩은 디버깅/로깅/비교에서 매우 유용
  • Object 덕분에 다형성, 공통 기능, OCP 원칙 적용이 가능함

자바의 모든 객체는 결국 Object에서 시작된다. 공통 기능과 다형성, 그리고 OCP 원칙을 가능하게 만드는 Object 클래스 하나로 자바의 객체지향 철학이 담겨 있다

출처: 김영한의 실전 자바 - 중급 1편

This post is licensed under CC BY 4.0 by the author.

Trending Tags