Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ทำไม Object class จึงเป็น super class สำหรับทุกคลาสใน Java?


Java.lang.Object class คือ root หรือ superclass ของลำดับชั้นของคลาส ซึ่งมีอยู่ใน java.lang package . คลาสที่กำหนดไว้ล่วงหน้าและคลาสที่ผู้ใช้กำหนดทั้งหมดเป็นคลาสย่อยจาก Object ชั้นเรียน

เหตุใดคลาสอ็อบเจ็กต์จึงเป็นซูเปอร์คลาส

นำกลับมาใช้ใหม่ได้

  • ทุกอ็อบเจ็กต์มีคุณสมบัติทั่วไป 11 ประการ คุณสมบัติเหล่านี้ต้องถูกนำไปใช้โดยนักพัฒนา Java ทุกคน
  • เพื่อลดภาระให้กับนักพัฒนา SUN ได้พัฒนาคลาสที่เรียกว่า Object โดยใช้คุณสมบัติทั้ง 11 ประการด้วย 11 เมธอด
  • เมธอดทั้งหมดนี้มีตรรกะทั่วไปร่วมกันสำหรับคลาสย่อยทั้งหมด หากตรรกะนี้ไม่เป็นไปตามข้อกำหนดของคลาสย่อย คลาสย่อยก็สามารถแทนที่ได้

รันไทม์พหุสัณฐาน

  • เพื่อให้เกิดความแตกต่างของรันไทม์ เพื่อให้เราสามารถเขียนเมธอดเดียวเพื่อรับและส่งคลาสอ็อบเจกต์ประเภทใดก็ได้เป็นอาร์กิวเมนต์และเป็นประเภทส่งคืน

ฟังก์ชันทั่วไปของทุกคลาสอ็อบเจ็กต์

การเปรียบเทียบวัตถุสองชิ้น

  • บูลีนสาธารณะเท่ากับ (Object obj)

กำลังเรียกค้นแฮชโค้ด

  • รหัส int สาธารณะ ()

เรียกข้อมูลอ้างอิงวัตถุคลาสรันไทม์

  • คลาสสุดท้ายสาธารณะ getClass()

การดึงข้อมูลออบเจ็กต์ในรูปแบบสตริง

  • สตริงสาธารณะ toString()

การโคลนวัตถุ

  • ป้องกัน Object clone() พ่น CloneNotSupportedException

รหัสการล้างวัตถุ/ ทรัพยากรที่เผยแพร่รหัส

  • ป้องกันโมฆะจบ () โยน Throwable

เพื่อรอเธรดปัจจุบันจนกว่าเธรดอื่นจะเรียกใช้การแจ้งเตือน ()

  • รอโมฆะสุดท้ายสาธารณะ () ส่ง InterruptedException

เพื่อรอเธรดปัจจุบันจนกว่าเธรดอื่นจะเรียกใช้การแจ้งเตือน () ตามระยะเวลาที่กำหนด

  • รอโมฆะสุดท้ายสาธารณะ (หมดเวลานาน) ส่ง InterruptedException

เพื่อรอเธรดปัจจุบันจนกว่าเธรดอื่นจะเรียกใช้การแจ้งเตือน () ตามระยะเวลาที่กำหนด

  • การรอโมฆะครั้งสุดท้ายแบบสาธารณะ (หมดเวลานาน, 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