한 걸음 두 걸음
자바 Java ] 오브젝트 클래스 Object Class 본문
자바의 모든 클래스는 Object클래스를 상속받습니다.(명시적으로 선언하지 않으면 모든 클래스는 Object클래스를 상속받습니다.) 즉, Object class는 루트클래스입니다. 이는 java.lang패키지에 들어있는 클래스입니다.
그렇다면 Object의 메소드를 활용할 수 있을텐데, 어떤 메소드가 있는지 확인해볼까요?
-
String toString()
객체의 클래스명과 해시코드를 문자열로 반환합니다. 재정의를 통해 클래스의 변수 상태를 확인할 때 많이 씁니다.(클래스 내에서 this()로 내부 클래스를 호출하거나 객체를 출력시키면 toString이 호출됩니다. 때문에 디버깅할 때 자주 사용합니다.) -
boolean equals(Object)
파라미터로 오는 Object와 자신의 객체가 같은지 확인하는 함수입니다. 두 객체를 비교하여(==) 같으면 true를 반환하므로, Primitive data type에서는 값을 비교하는데 문제가 없지만, 객체를 비교할 때에는 같은 주소값을 참조하는지 확인하게 됩니다. 그래서 같은 값을 담고있는 클래스라도 서로 다른 주소에 있는 객체 둘을 비교하면 false가 나옵니다. 만약 두 객체의내용
이 같은지 확인하고싶다면, 재정의를 해주어야합니다.class A { String str; A(String str){ this.str = str; } public boolean equals(Object obj){ if(obj instanceof A){ return str.equals( ((A)obj).str ); } else{ return false; } } } public class Main { public static void main(String\[\] args) { A a = new A(3); A b = new A(2); A c = new A(3); a.equals(B); //false a.equals(C); //true } }
-
int hashCode()
객체가 갖는 해시코드를 반환합니다.(해시값이 같으면 같은 객체일 확률이 매우 높습니다.)
오버라이드 해주지 않는 이상 JVM이 자동으로 할당합니다. -
Class getClass()
객체가 속한 클래스 정보를 반환합니다. 즉, 객체가 어떤 클래스로 생성되었는지 확인하는 것으로 리플렉션에 해당합니다.
public class Main {
public static void main(String\[\] args) {
A a = new A(3);
a.getClass().getName(); // A
}
}
-
Object clone()
객체의 사본 만들어( 복사하여) 반환합니다. -
void finalize()
GC가 객체를 회수합니다. 이는 GC에 의해 자동으로 호출되는 콜백메소드이니 신경쓸 필요가 없습니다.오버라이드하지 않는 것이 좋습니다.
참고 : https://docs.oracle.com/javase/9/docs/api/java/lang/Object.html
'Language > Java' 카테고리의 다른 글
자바 Java ] 다형성 Polymorphism (0) | 2019.11.20 |
---|---|
자바 JAVA ] 인터페이스 interface / CompareTo, Comparable (0) | 2019.11.20 |
자바 Java ] 추상클래스 abstract class / 추상 메소드 abstract method (0) | 2019.11.20 |
자바 JAVA ] final (0) | 2019.11.20 |
자바 JAVA ] 상속 Inheritance (0) | 2019.11.20 |