728x90
Object Class란?
Object 클래스는 Java의 모든 클래스 계층 구조의 최상위 슈퍼클래스입니다. Java에서 작성되는 모든 클래스는 명시적으로 다른 클래스를 상속받지 않더라도 자동으로 Object 클래스를 상속받습니다. 이로 인해 모든 Java 객체는 Object 클래스에서 정의된 기본 메서드를 사용할 수 있습니다.
Object 클래스의 역할
- 모든 클래스의 공통 기능 제공
- 모든 Java 클래스는 Object 클래스를 상속받아 공통 기능(비교, 출력, 복제 등)을 제공받습니다.
- 기본 메서드 제공
- 객체 비교, 문자열 출력, 해시 처리, 복제 등 다양한 기능의 기본 메서드를 제공합니다.
- 다형성(Polymorphism) 지원
- Object 타입으로 모든 객체를 참조할 수 있어, 범용적인 프로그래밍이 가능합니다.
- 예: Object obj = new String("Hello");
- 컬렉션 API 지원
- ArrayList, HashMap 같은 컬렉션 클래스는 내부적으로 Object 타입으로 데이터를 저장함.
- 제네릭 이전에는 모든 객체를 Object 타입으로 처리했음.
주요 메서드와 설명
메서드설명사용 예시
boolean equals(Object obj) | 두 객체가 논리적으로 같은지를 비교 | a.equals(b) → 두 객체의 값 비교 |
int hashCode() | 객체를 식별하는 해시 코드 반환. HashMap 등의 키로 사용 가능 | map.put(obj, value) 시 내부적으로 호출됨 |
String toString() | 객체의 문자열 표현 반환 | System.out.println(obj) 시 자동 호출됨 |
protected Object clone() | 객체의 복사본을 생성 | MyClass copy = (MyClass) original.clone(); (단, Cloneable 인터페이스 구현 필요) |
final void notify() | 대기 중인 스레드 하나를 깨움 (멀티스레딩) | synchronized 블록 내에서 사용 |
final void notifyAll() | 모든 대기 중인 스레드를 깨움 | synchronized 블록 내에서 사용 |
final void wait() | 현재 스레드를 대기 상태로 만듦 | notify()와 함께 동기화 제어에 사용 |
Class<?> getClass() | 현재 객체의 클래스 정보를 반환 | obj.getClass().getName() |
protected void finalize() | 객체가 GC될 때 호출됨 (권장되지 않음) | 리소스 해제 용도 (현재는 사용 지양) |
728x90