Object 클래스는 최상위 조상 클래스이다. 선언 시 extend 키워드로 다른 클래스를 상속하지 않으면 묵시적으로 java.lang.Object 클래스를 강제 상속하게 된다.
객체 자신을 복제하는 메소드로 반환 타입은 Object 타입으로 선언되어 있다. 따라서 타입에 맞게 사용하려면 형변환 연산이 필요하다. 복제 가능 클래스와 불가능 클래스가 있는데 Cloneable 인터페이스로 구현한 클래스는 바로 복제할 수 있다.
package pack01;
import java.util.GregorianCalendar;
public class ObjectCloneEx {
public static void main(String[] args) {
GregorianCalendar cal1 = new GregorianCalendar(2024, 07,07);
GregorianCalendar cal2 = (GregorianCalendar)cal1.clone();
System.out.printf("%tF %n", cal1);
System.out.printf("%tF %n", cal2);
}
}
비교하는 메소드로 두 객체가 같으면 true 다르면 false를 반환한다.
package pack01;
class School {
private String name;
public School(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof School) {
School school = (School) obj;
return this.name == school.name;
} else {
return false;
}
}
}
public class EqualsEx1 {
public static void main(String[] args) {
School sch1 = new School("해피마이스터고");
School sch2 = new School("해피마이스터고");
System.out.println("sch1==sch2 : "+(sch1==sch2));
System.out.println("sch1.equals(sch2): "+sch1.
equals(sch2));
}
}
참조하고 있는 클래스 정보를 얻기 위해 사용되는 메소드이다.
package pack01;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
class Rectangle {
private int width, height;
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
public String toString() {
return "Rectangle [width=" + width + ", height=" + height + "]";
}
public int getArea() {
return width * height;
}
}
public class getClassEx {
public static void main(String[] args) {
Rectangle p = new Rectangle(2, 3);
Class clss = p.getClass();
System.out.println(clss.getName());
System.out.println(clss.getSuperclass());
Field field[] = clss.getDeclaredFields();
System.out.println(
"field[0] : " + field[0] + "\n" +
"field[1] : " + field[1]
);
Method method[] = clss.getDeclaredMethods();
System.out.println(
"method[0] : " + method[0] + "\n" +
"method[1] : " + method[1]
);
System.out.println(p.hashCode());
System.out.println(p.toString());
System.out.println(p);
}
}