본문 바로가기
2-1 학기/OOP

[JAVA] Object 클래스

by bona.com 2023. 5. 31.

Object 클래스 생성과 특징

Object는 java.lang 패키지에 속한 클래스이며, 모든 클래스에 강제로 상속된다.

Object만이 아무 클래스도 상속받지 않는 유일한 클래스로 계층 구조 상 최상위 클래스이다.

 

객체 속성

class Point{
	private int x, int y;
    public Point(int x, int y){
    	this.x = x; this.y = y;
    }
}
public class ObjectPropertyEx{
	public static void print(Object obj){
    	System.out.println(obj.getClass().getName());
        System.out.println(obj.hashCode());
        System.out.println(obj.toString());
        System.out.println(obj);
    }
    public static void main(String[] args){
    	Point p = new Point(2,3);
        print(p);
    }
}

위와 같이 객체의 getName() 메소드를 이용하면 obj 레퍼런스가 가리키는 객체의 클래스 타입을 알아낼 수 있다.

 

toString() 메소드

객체를 문자열로 변환하는 메소드가 toString() 메소드이다.

Object의 toString() 메소드는 객체의 클래스의 이름을 얻어와서 '@'를 연결하고 다시 객체의 해시코드 값을 16진수로 변환하여 연결한 문자열을 리턴한다.

 

개발자는 toString()을 오버라이딩하여 자신만의 문자열을 리턴할 수 있다.

class Point{
	private int x, int y;
    public Point(int x, int y){
    	this.x = x; this.y = y;
    }
    public String toString(){
    	return "Point(" + x + "," + y + ")";
    }
}
public class ToStringEx{	
	public static void main(String[] args){
    	Point p = new Point(2,3);
        System.out.println(p.toString());
        System.out.println(p);
	}
}

 

equals() 메소드

equals()는 두 객체의 내용이 같은지를 비교하는 메소드이다.

내용의 동일성은 전적으로 클래스 작성자가 정의할 문제이기 때문에 클래스 작성하자 equals() 메소드를 오버라이딩하는 것이 원칙이다.

class Point{
	private int x, y;
    public Point(int x, int y){
    	this.x = x; this.y =y;
    }
    public boolean equals(Object obj){
    	Point p = new (Point)obj;
        if(x == p.x && y == p.y)
        	return true;
        else
        	return false;
    }
}
public class EqualsEx{
	public static void main(String[] args){
    	Point a = new Point(2,3);
        Point b = new Point(2,3);
        Point c = new Point(3,4);
        if (a == b)
        	System.out.println("a==b");
        if(a.equals(b))
        	System.out.println("a is equals to b");
        if(a.equals(c))
        	System.out.println("a is equals to c");
    }
}