[JAVA] Object 클래스

Sangho Kim·2022년 9월 29일
0

JAVA

목록 보기
11/17

Object 클래스란?

  • 자바에서 모든 클래스는 Object를 암시적으로 상속 받고 있다.
    그런 점에서 Object는 모든 클래스의 조상이라고 할 수 있다.

Object 대표적인 메소드

📌 equals()

  • 해당 인스턴스를 매개변수로 전달받는 참조 변수와 비교하여, 그 결과를 반환

Object.class 에 들어가보면

public boolean equals(Object obj) { 
	return (this==obj);
    }

으로 비교 결과값을 true, false로 반환해주는 boolean으로 알려준다.

equals() 예제 코드

class Circle {
    int radius;
    public Circle(int radius) {
        this.radius = radius;
    }
    public class Test {
        public static void main(String[] args) {
            Circle obj1 = new Circle(10);
            Circle obj2 = new Circle(10);
            if (obj1 == obj2) System.out.println("2개의 원은 같습니다.");
            else System.out.println("2개의 원은 같지 않습니다.");
        }
    }
}

실행 결과

2개의 원은 같습니다.

📌 toStirng()

  • 해당 인스턴스에 대한 정보를 문자열로 반환한다.
    반환되는 문자열은 클래스 이름과 함께 구분자로'@'가 사용된다.

Object.class 에 들어가보면

public String toString() { 
	return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

으로 되어있는것을 볼 수 있다.

toString() 예제 코드

Car car01 = new Car();
Car car02 = new Car();
 
System.out.println(car01.toString());
System.out.println(car02.toString());

실행 결과

Car@15db9742
Car@6d06d69c

📌 clone()

  • 해당 인스턴스를 복제하고 새로운 인스턴스를 생성해 반환한다.
    주의점은 단순히 필드 값만 복사하기 때문에 필드의 값이 배열이면 제대로 복제할 수 없다.
    따라서 clone() 메소드를 오버라이딩해서 재정의해야 한다.
    이를 깊은복사, 얕은복사라고 한다.

얕은 복사 예제코드

public Circle shallowCopy() {
    Object obj = null;
    try {
        obj = super.clone();
    }
    catch (CloneNotSupportedException e) {}
    return (Circle)obj;
}

깊은 복사 예제코드

public Circle deepCopy() {
    Object obj = null;
    try {
        obj = super.clone();
    }
    catch (CloneNotSupportedException e) {}
    Circle c = (Circle)obj;
    c.p = new Point(this.p.x, this.p.y);
    return c;
}
profile
Immediately, certainly, until it becomes.

0개의 댓글