Object 클래스는 자바 프로그래밍 언어에서 모든 클래스의 최상위 부모 클래스
다음은 Object 클래스에 대한 몇가지 중요한 점
최상위 클래스
모든 클래스는 암묵적으로 'Object' 클래스의 하위 클래스이며, 'Object' 클래스가 제공하는 메서드를 상속받는다.
주요 메서드
- equals(Object obj): 두 객체가 동일한지 비교한다. 기본 구현은 두 객체의 참조값을 비교하지만 필요한 경우 재정의 가능하다.(Override)
- hashCode(): 객체의 해시코드 값을 반환한다. equals 메서드가 재정의 된 경우 반드시 hashCode도 재정의해야 한다.
- toString(): 객체의 문자열 표현을 반환한다. 기본적으로 객체의 클래스 이름과 해시코드 값을 반환하며, 사용자 정의 객체의 경우 정보 출력을 위해 재정의 할 수 있다.
- getClass(): 객체의 런타임 클래스를 반환한다.
- finalize(): 객체에 의해 점유된 리소스를 정리할 때 호출된다.
사용 사례
Object 클래스는 상속 구조의 근간을 이루고, 동등성 비교 및 문자열 표현 같은 공통된 기능을 제공한다.
이러한 Object 클래스의 메서드들은 객체 지향 프로그래밍에서 객체 관리 및 조작에 있어 중요한 역할을 한다.
import java.util.Objects;
public class Student {
String name;
String number;
int birthYear;
public static void main(String[] args) {
Student s1=new Student(); //객체 생성
s1.name="홍길동";
s1.number="1111";
s1.birthYear=1999;
Student s2=new Student();
s2.name="홍길동";
s2.number="1111";
s2.birthYear=1999;
if(s1.equals(s2)){
System.out.println("s1 = s2");
}
else{
System.out.println("s1 != s2");
}
System.out.println(s1.toString());
}
}

import java.util.Objects;
public class Student {
String name;
String number;
int birthYear;
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
//getClass(): 클래스 객체(정보) 반환
if (obj == null || getClass() != obj.getClass()) return false;
Student student = (Student) obj; //항변환
return Objects.equals(number, student.number);
}
@Override
public int hashCode() {
return Objects.hash(number);
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", number='" + number + '\'' +
", birthYear=" + birthYear +
'}';
}
public static void main(String[] args) {
Student s1=new Student(); //객체 생성
s1.name="홍길동";
s1.number="1111";
s1.birthYear=1999;
Student s2=new Student();
s2.name="홍길동";
s2.number="1111";
s2.birthYear=1999;
if(s1.equals(s2)){
System.out.println("s1 = s2");
}
else{
System.out.println("s1 != s2");
}
System.out.println(s1.hashCode());
System.out.println(s2.hashCode());
System.out.println(s1.toString());
}
}
