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");
}
}
'2-1 학기 > OOP' 카테고리의 다른 글
[JAVA] String 클래스 (0) | 2023.05.31 |
---|---|
[JAVA] Wrapper 클래스 (0) | 2023.05.31 |
[JAVA] 메소드 오버라이딩(Method Overriding) (0) | 2023.05.30 |
[JAVA] 업캐스팅과 instanceof 연산자 (0) | 2023.05.23 |
[JAVA] 추상 클래스 vs. 인터페이스 (0) | 2023.05.23 |