Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Object 클래스가 Java의 모든 클래스에 대한 수퍼 클래스인 이유는 무엇입니까?


Java.lang.Object class는 java.lang 패키지에 있는 클래스 계층의 루트 또는 슈퍼클래스입니다. . 사전 정의된 모든 클래스와 사용자 정의 클래스는 개체 의 하위 클래스입니다. 수업.

객체 클래스가 슈퍼클래스인 이유

재사용성

  • 모든 개체에는 11개의 공통 속성이 있으며 이러한 속성은 모든 Java 개발자가 구현해야 합니다.
  • 개발자의 부담을 줄이기 위해 SUN은 이 11가지 속성을 모두 11가지 메서드로 구현하여 Object라는 클래스를 개발했습니다.
  • 이러한 모든 메서드는 모든 하위 클래스에 공통적인 일반 논리를 가지고 있습니다. 이 논리가 하위 클래스 요구 사항을 충족하지 않으면 하위 클래스가 이를 재정의할 수 있습니다.

런타임 다형성

  • 런타임 다형성을 구현하여 모든 유형의 클래스 객체를 인수 및 반환 유형으로 수신 및 전송하는 단일 메소드를 작성할 수 있습니다.

모든 클래스 개체의 공통 기능

두 개체 비교

  • 공개 부울 등호(객체 개체)

해시코드 검색

  • 공개 정수 해시코드()

런타임 클래스 개체 참조 검색

  • 공개 최종 클래스 getClass()

문자열 형식으로 개체 정보 검색

  • 공개 문자열 toString()

복제 개체

  • 보호된 개체 clone()이 CloneNotSupportedException을 발생시킵니다.

객체 정리 코드/리소스 릴리스 코드

  • 보호된 void finalize() throwable 던지기

다른 스레드가 notify()를 호출할 때까지 현재 스레드를 기다리려면

  • 공개 최종 무효 wait()에서 InterruptedException 발생

다른 스레드가 지정된 시간 동안 notify()를 호출할 때까지 현재 스레드를 기다리려면

  • 공개 최종 무효 대기(긴 시간 초과)에서 InterruptedException 발생

다른 스레드가 지정된 시간 동안 notify()를 호출할 때까지 현재 스레드를 기다리려면

  • 공개 최종 무효 대기(긴 시간 초과, int nano)에서 InterruptedException 발생

대기 중인 스레드에 개체 잠금 사용 가능 여부 알림

  • 공개 최종 무효 알림()

대기 중인 스레드에 대한 개체 잠금 가용성에 대해 알림

  • 공개 최종 무효 notifyAll()

예시

class Thing extends Object implements Cloneable {
   public String id;
   public Object clone() throws CloneNotSupportedException {
      return super.clone();
   }
   public boolean equals(Object obj) {
      boolean result = false;
      if ((obj!=null) && obj instanceof Thing) {
         Thing t = (Thing) obj;
         if (id.equals(t.id)) result = true;
      }
      return result;
   }
   public int hashCode() {
      return id.hashCode();
   }
   public String toString() {
      return "This is: "+id;
   }
}
public class Test {
   public static void main(String args[]) throws Exception {
      Thing t1 = new Thing(), t2;
      t1.id = "Raj";
      t2 = t1; // t1 == t2 and t1.equals(t2)
      t2 = (Thing) t1.clone(); // t2!=t1 but t1.equals(t2)
      t2.id = "Adithya"; // t2!=t1 and !t1.equals(t2)
      Object obj = t2;
      System.out.println(obj); //Thing = Adithya
   }
}

출력

This is: Adithya