Object 클래스

말하는 감자·2024년 12월 20일
0

자바 중급

목록 보기
1/21
post-thumbnail

개념

Object 클래스는 자바 프로그래밍 언어에서 모든 클래스의 최상위 부모 클래스
다음은 Object 클래스에 대한 몇가지 중요한 점

최상위 클래스

모든 클래스는 암묵적으로 'Object' 클래스의 하위 클래스이며, 'Object' 클래스가 제공하는 메서드를 상속받는다.

주요 메서드

  • equals(Object obj): 두 객체가 동일한지 비교한다. 기본 구현은 두 객체의 참조값을 비교하지만 필요한 경우 재정의 가능하다.(Override)
  • hashCode(): 객체의 해시코드 값을 반환한다. equals 메서드가 재정의 된 경우 반드시 hashCode도 재정의해야 한다.
  • toString(): 객체의 문자열 표현을 반환한다. 기본적으로 객체의 클래스 이름과 해시코드 값을 반환하며, 사용자 정의 객체의 경우 정보 출력을 위해 재정의 할 수 있다.
  • getClass(): 객체의 런타임 클래스를 반환한다.
  • finalize(): 객체에 의해 점유된 리소스를 정리할 때 호출된다.

사용 사례

Object 클래스는 상속 구조의 근간을 이루고, 동등성 비교 및 문자열 표현 같은 공통된 기능을 제공한다.

이러한 Object 클래스의 메서드들은 객체 지향 프로그래밍에서 객체 관리 및 조작에 있어 중요한 역할을 한다.

Code 예시

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());
    }
}

  • s1과 s2가 완전히 동일한 값을 가지고 있음에도 불구하고 다른 객체로 인식
  • toString 메서드 또한 다른 객체이므로 다른 해시코드 값을 반환함

Override(재정의)

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());
    }
}

  • 재정의를 통하여 s1과 s2를 동일한 객체로 인식
  • toString의 형식을 재정의 하여 출력

Code 실습

Object와 오버라이딩 - 실습

profile
주니어개발자(?)

0개의 댓글