logo

فئة الكائن في جافا

فئة الكائن في جافا موجود في java.lang طَرد.

جافا قابلة للمقارنة
  • يتم اشتقاق كل فئة بشكل مباشر أو غير مباشر من فئة الكائن. إذا لم يمتد الفصل إلى أي فصل آخر، فهو فئة فرعية مباشرة لل فئة كائن جافا وإذا امتد إلى فئة أخرى فهو مشتق بشكل غير مباشر.
  • توفر فئة الكائن عدة طرق مثل إلى سلسلة () يساوي () رمز التجزئة () وغيرها الكثير.
  • تعمل فئة الكائن كجذر للتسلسل الهرمي للميراث في أي برنامج جافا.

هنا نستخدم إلى سلسلة () و رمز التجزئة () طرق فئة الكائن لتوفير تمثيل سلسلة مخصصة لفئة .



Java
// Java Code to demonstrate Object class class Person {  String n; //name  // Constructor  public Person(String n) {  this.n = n;  }  // Override toString() for a   // custom string representation  @Override  public String toString() {  return 'Person{name:'' + n + ''}';  }  public static void main(String[] args) {    Person p = new Person('Geek');    // Custom string representation  System.out.println(p.toString());    // Default hash code value  System.out.println(p.hashCode());   } } 

الإخراج
Person{name:'Geek'} 321001045 

توضيح: في المثال أعلاه نتجاوز إلى سلسلة () طريقة تقديم أ تمثيل سلسلة مخصصة لفئة الشخص واستخدام رمز التجزئة () طريقة لعرض قيمة رمز التجزئة الافتراضية للكائن.

طرق فئة الكائن

توفر فئة الكائن طرقًا متعددة وهي كما يلي:

  • طريقة toString ().
  • طريقة hashCode ().
  • يساوي (كائن obj) الطريقة
  • طريقة وضع اللمسات النهائية ().
  • طريقة getClass()
  • طريقة الاستنساخ ().
  • انتظر () يخطر () يخطر الكل () (طرق التزامن)
أساليب فئة الكائن في جافا' title=

1. طريقة toString ().

ال إلى سلسلة () يوفر تمثيل سلسلة لكائن ويستخدم لتحويل كائن إلى سلسلة. تقوم طريقة toString() الافتراضية لفئة Object بإرجاع سلسلة تتكون من اسم الفئة التي يكون الكائن مثيلًا لها، وحرف الإشارة `@' والتمثيل السداسي العشري غير الموقع لرمز التجزئة الخاص بالكائن.



ملحوظة: عندما نحاول طباعة أي مرجع كائن، يتم استدعاء طريقة toString() داخليًا.

مثال:

طالب الصف العام {



سلسلة عامة إلى سلسلة () {

إرجاع "كائن الطالب"؛

}

}

توضيح: تم تجاوز طريقة toString() لإرجاع تمثيل سلسلة مخصص لكائن الطالب.

2. طريقة hashCode ().

لكل كائن يقوم JVM بإنشاء رقم فريد وهو رمز التجزئة. تقوم بإرجاع أعداد صحيحة مميزة للكائنات المميزة. من المفاهيم الخاطئة الشائعة حول هذه الطريقة أن طريقة hashCode() تُرجع عنوان الكائن غير الصحيح. يقوم بتحويل العنوان الداخلي للكائن إلى عدد صحيح باستخدام خوارزمية. طريقة hashCode () هي محلي لأنه في Java من المستحيل العثور على عنوان كائن، لذلك يستخدم لغات أصلية مثل C/C++ للعثور على عنوان الكائن.

استخدام طريقة hashCode ():

تقوم بإرجاع قيمة التجزئة المستخدمة للبحث عن الكائنات في المجموعة. يستخدم JVM (Java Virtual Machine) طريقة رمز التجزئة أثناء حفظ الكائنات في هياكل البيانات المرتبطة بالتجزئة مثل HashSet HashMap Hashtable وما إلى ذلك. والميزة الرئيسية لحفظ الكائنات بناءً على رمز التجزئة هي أن البحث يصبح سهلاً. 

ملحوظة: تجاوز رمز التجزئة () يجب تنفيذ الطريقة بحيث نقوم بإنشاء رقم فريد لكل كائن. على سبيل المثال بالنسبة لفصل الطالب يمكننا إرجاع رقم التسجيل. للطالب من طريقة hashCode() لأنها فريدة من نوعها. 

مثال:

طالب الصف العام {

لفة كثافة العمليات؛

@تجاوز

public int hashCode() {

لفة العودة

}

}

توضيح: ال رمز التجزئة () تم تجاوز الطريقة لإرجاع قيمة تجزئة مخصصة بناءً على لفة كائن الطالب.

3. يساوي (كائن كائن) الطريقة

ال يساوي () الطريقة تقارن الكائن المحدد بالكائن الحالي. يوصى بتجاوز هذه الطريقة لتحديد شروط المساواة المخصصة.

ملحوظة: من الضروري بشكل عام تجاوز رمز التجزئة () كلما تم تجاوز هذه الطريقة وذلك للحفاظ على العقد العام لطريقة hashCode الذي ينص على أن الكائنات المتساوية يجب أن تحتوي على رموز تجزئة متساوية. 

مثال:

طالب الصف العام {

لفة كثافة العمليات؛


@تجاوز

منطقية عامة يساوي (كائن س) {

إذا (س مثيل الطالب) {

return this.roll == ((Student) o).roll;

}

عودة كاذبة.

}

}

توضيح: ال يساوي () تم تجاوز الطريقة للمقارنة لفافة بين كائنين الطالب.

4. طريقة getClass()

ال احصل على كلاس () تُرجع الطريقة كائن فئة الكائن "هذا" وتستخدم للحصول على فئة وقت التشغيل الفعلية للكائن. ويمكن استخدامه أيضًا للحصول على البيانات الوصفية لهذه الفئة. كائن الفئة الذي تم إرجاعه هو الكائن الذي تم قفله بواسطة طرق متزامنة ثابتة للفئة الممثلة. لأنها نهائية لذلك لا نتجاوزها.

مثال:

Java
// Demonstrate working of getClass() public class Geeks {  public static void main(String[] args)  {  Object o = new String('GeeksForGeeks');  Class c = o.getClass();  System.out.println('Class of Object o is: '  + c.getName());  } } 

الإخراج
Class of Object o is: java.lang.String 

توضيح: ال احصل على كلاس () يتم استخدام الطريقة لطباعة فئة وقت التشغيل للكائن "o".

ملحوظة: بعد تحميل ملف .class سيقوم JVM بإنشاء كائن من هذا النوع java.lang.Class في منطقة الكومة. يمكننا استخدام كائن الفئة هذا للحصول على معلومات مستوى الفصل. ويستخدم على نطاق واسع في انعكاس  

5. وضع الصيغة النهائية () للطريقة

ال وضع اللمسات النهائية () يتم استدعاء الطريقة قبل تجميع البيانات المهملة للكائن مباشرةً. ويسمى جامع القمامة على كائن عندما يحدد جامع البيانات المهملة أنه لا يوجد المزيد من المراجع إلى الكائن. يجب أن نتجاوز طريقة Finalize() للتخلص من موارد النظام وتنفيذ أنشطة التنظيف وتقليل تسرب الذاكرة. على سبيل المثال، قبل تدمير حاوية ويب كائنات Servlet، تسمى دائمًا طريقة الإنهاء لتنفيذ أنشطة التنظيف الخاصة بالجلسة. 

ملحوظة: طريقة الإنهاء تسمى فقط مرة واحدة على كائن على الرغم من أن هذا الكائن مؤهل لجمع البيانات المهملة عدة مرات. 

مثال:

Java
// Demonstrate working of finalize() public class Geeks {  public static void main(String[] args) {    Geeks t = new Geeks();  System.out.println(t.hashCode());  t = null;  // calling garbage collector  System.gc();  System.out.println('end');  }  @Override protected void finalize()  {  System.out.println('finalize method called');  } } 

الإخراج
1510467688 end finalize method called 

توضيح: ال وضع اللمسات النهائية () يتم استدعاء الطريقة قبل أن يتم جمع البيانات المهملة للكائن.

6. طريقة الاستنساخ (). 

ال استنساخ () تقوم الطريقة بإنشاء وإرجاع كائن جديد يمثل نسخة من الكائن الحالي.

مثال:

كتاب الطبقة العامة ينفذ Cloneable {

سلسلة خاصة ر؛ //عنوان


كتاب عام (سلسلة ر) {

this.t = t;

}

@تجاوز

استنساخ الكائن العام () يرمي CloneNotSupportedException {

إرجاع super.clone();

}

}

توضيح: ال استنساخ () تم تجاوز الطريقة لإرجاع نسخة مستنسخة من الملف كائن الكتاب .

7. طرق التزامن: wait() notify() و notifyAll()

وترتبط هذه الأساليب الاتصالات موضوع في جافا . يتم استخدامها لجعل سلاسل الرسائل تنتظر أو تخطر الآخرين في البرمجة المتزامنة.

مثال على استخدام كافة أساليب فئة الكائن في Java

Java
import java.io.*; public class Book implements Cloneable {  private String t; // title  private String a; // author  private int y; // year  public Book(String t String a int y)  {  this.t = t;  this.a = a;  this.y = y;  }  // Override the toString method  @Override public String toString()  {  return t + ' by ' + a + ' (' + y + ')';  }  // Override the equals method  @Override public boolean equals(Object o)  {  if (o == null || !(o instanceof Book)) {  return false;  }  Book other = (Book)o;  return this.t.equals(other.getTitle())  && this.a.equals(other.getAuthor())  && this.y == other.getYear();  }  // Override the hashCode method  @Override public int hashCode()  {  int res = 17;  res = 31 * res + t.hashCode();  res = 31 * res + a.hashCode();  res = 31 * res + y;  return res;  }  // Override the clone method  @Override public Book clone()  {  try {  return (Book)super.clone();  }  catch (CloneNotSupportedException e) {  throw new AssertionError();  }  }  // Override the finalize method  @Override protected void finalize() throws Throwable  {  System.out.println('Finalizing ' + this);  }  public String getTitle() { return t; }  public String getAuthor() { return a; }  public int getYear() { return y; }  public static void main(String[] args)  {  // Create a Book object and print its details  Book b1 = new Book(  'The Hitchhiker's Guide to the Galaxy'  'Douglas Adams' 1979);  System.out.println(b1);  // Create a clone of the Book object and print its  // details  Book b2 = b1.clone();  System.out.println(b2);  // Check if the two objects are equal  System.out.println('b1 equals b2: '  + b1.equals(b2));  // Get the hash code of the two objects  System.out.println('b1 hash code: '  + b1.hashCode());  System.out.println('b2 hash code: '  + b2.hashCode());  // Set book1 to null to trigger garbage collection  // and finalize method  b1 = null;  System.gc();  } } 

الإخراج
The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) b1 equals b2: true b1 hash code: 1840214527 b2 hash code: 1840214527 

توضيح: المثال أعلاه يوضح استخدام إلى سلسلة () يساوي () رمز التجزئة () و استنساخ () الأساليب في فئة الكتاب .