Object 클래스

·2025년 5월 18일

Power Java

목록 보기
44/75

8.6 Object 클래스

-자바에서는 클래스를 정의할 때 명시적으로 부모 클래스를 선언하지 않으면
Object 클래스가 부모 클래스가 된다.

Object 내부 메소드

  • public boolean equals(Object obj)
    : obj가 이 객체와 같은지를 검사한다.
  • public String toString()
    : 객체의 문자열 표현을 반환한다.
  • protected Object clone()
    : 객체 자신의 복사본을 생성하여 반환한다.
  • pulbic int hashCode()
    : 객체에 대한 해쉬 코드를 반환한다.
  • protected void finalize()
    : 가비지 컬렉터에 의하여 호출된다.
  • public final Class getClass()
    : 객체의 클래스 정보를 반환한다.

1. getClass() 메소드

: 객체가 어떤 클래스로 생성되었는지에 대한 정보를 반환한다.
ex) 어떤 객체 타입을 가지고 있니?
-리플렉션 기법
객체가 자신을 만든 클래스에 대하여 물어보는 것.

class Circle {	}
public class CircleTest {
	public static void main(String[] args) {
    	Circle obj = new Circle();
        System.out.println("obj is of type " + obj.getClass().getName());
        System.out.println("obj의 해쉬코드=" + obj.hashCode());
	}
}
// 출력
obj is of type test.Circle
obj의 해쉬코드=1554547125
  1. toString() 메소드
    : 객체의 상태를 몇 줄의 문자열로 요약하여 반환하는 함수.
    *일반적으로 재정의해야 하는 메소드.

우리가 println()을 사용하여 객체를 출력하면 객체의 toString() 메소드가 자동으로 호출된다.
=> 재정의하는 게 권장되는 이유

class Circle {
	int radius;
    public Circle(int radius) {
    	this.radius = radius;
    }
    public String toString() {
    	return "Circle(r="+radius+")";
    }
}

public class CircleTest {
	public static void main(String[] args) {
    	Circle obj = new Circle(10);
        system.out.println(obj);
    }
}
//출력
Circle(r=10)
  1. equal() 메소드
    & 객체의 값을 비교하는 데 == 연산자를 사용하면 잘못된 결과를 얻게 된다.
    => == 연산자는 객체의 내용이 아니라, 객체의 참조값이 동일한지만을 검사하는 것이기 때문.

: 객체의 내용을 검사하는 데 사용한다.

String (Object의 서브 클래스)
-String에서의 equals는 오버라이딩된 메소드이다.
(같은 클래스인지 판단X)

class Circle {
	int radius;
    public Circle(int radius) {
    	this.radius = radius;
    }
    
    public boolean equals(Circle c1) {
    	if ( radius == c1.radius )
        	return true;
        else return false;
    }
}

public class CircleTest {
	public static void main(String[] args) {
    	Circle obj1 = new Circle(10);
        Circle obj2 = new Circle(10);
        if ( obj1.equals(obj2) )
        	System.out.println("2개의 원은 같습니다.");
        else System.out.println("2개의 원은 같지 않습니다.");
    }
}
//출력
2개의 원은 같습니다.
  1. finalize() 메소드
    Object 클래스는 finalize()라는 콜백 메소드를 정의한다.
    : 객체가 소멸되기 직전에 호출되는 메소드이다.

-Object 클래스의 finalize()에서는 아무것도 하지 않지만,
자식 클래스에서 재정의하여서 자원을 반납하는 등의 정리과정을 실행할 수 있다.

  1. getClass()
  2. equals()
  3. toString()

0개의 댓글