Table of Contents
자바의 Object 클래스
1. Object 클래스란?
Object
클래스는 자바에서 모든 클래스의 최상위 부모 클래스입니다.
자바의 모든 클래스는 Object
클래스를 상속받으며, 이를 통해 기본적인 메서드들을 사용할 수 있습니다.
2. Object 클래스의 주요 메서드
Object
클래스는 다양한 메서드를 제공하며, 이를 오버라이딩하여 원하는 기능을 구현할 수 있습니다.
2.1 equals(Object obj)
- 두 객체가 논리적으로 같은지 비교하는 메서드
- 기본 구현은 참조 주소 비교 (
==
)이므로, 원하는 비교 기준을 만들기 위해 오버라이딩이 필요함
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return age == person.age && name.equals(person.name);
}
}
2.2 hashCode()
- 객체를 해시 기반 컬렉션(HashMap, HashSet 등)에 저장할 때 사용되는 해시값을 반환
equals()
를 오버라이딩하면hashCode()
도 함께 오버라이딩해야 함
@Override
public int hashCode() {
return Objects.hash(name, age);
}
2.3 toString()
- 객체의 정보를 문자열로 반환하는 메서드
- 기본 구현은
클래스명@해시코드
형식 - 오버라이딩하여 객체의 상태를 가독성 있게 출력 가능
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
2.4 clone()
- 객체를 복사하는 메서드
Cloneable
인터페이스를 구현해야 사용 가능
class Person implements Cloneable {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
2.5 getClass()
- 객체의 클래스 정보를 반환하는 메서드
- 클래스 이름, 패키지 정보 등을 확인할 때 사용
Person p = new Person("Alice", 25);
System.out.println(p.getClass().getName()); // Person
2.6 finalize()
- 객체가 GC(Garbage Collector)에 의해 삭제되기 전에 호출되는 메서드 (현재는 거의 사용되지 않음)
3. Object 클래스의 역할
- 모든 클래스의 공통 기능 제공
- 다형성 활용 가능 (
Object
타입으로 모든 객체 저장 가능)
Object obj = new Person("John", 30);
System.out.println(obj.toString());
4. 결론
Object
클래스는 자바의 모든 객체가 기본적으로 상속받는 클래스이며, 필수적인 메서드들을 제공합니다. 이를 오버라이딩하여 객체 비교, 출력, 해시 연산 등을 커스터마이징할 수 있습니다.
이제 Object
클래스를 적절히 활용하여 효율적인 객체 관리를 해보세요! 🚀