Object
الصنف الأساسي Object Object
Object هو الصنف الأب لكل أصناف Java — يوفّر دوال مشتركة مثل toString و equals و hashCode.
كل صنف في Java يرث من Object تلقائيًا حتى لو لم تكتب extends. يوفّر دوال أساسية يمكن (ويجب) إعادة تعريفها: toString() لطباعة نصية، equals() لمقارنة المحتوى، hashCode() للهاش.
الصياغة
public class MyClass extends Object {
@Override
public String toString() { return "..."; }
@Override
public boolean equals(Object o) { ... }
@Override
public int hashCode() { ... }
}📄 مثال
class Person {
String name;
Person(String name) { this.name = name; }
@Override
public String toString() {
return "Person(" + name + ")";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person p = (Person) o;
return name.equals(p.name);
}
}
System.out.println(new Person("سارة")); // Person(سارة)أهم النقاط
| العنصر | الوظيفة |
|---|---|
| toString() | يُرجع تمثيلًا نصيًا — يُعادة تعريفه دائمًا |
| equals(Object) | مقارنة المحتوى — لا تستخدم == لمقارنة الأصناف |
| hashCode() | رقم hash — يجب أن يكون متسقًا مع equals |
| getClass() | يُرجع نوع الكائن الفعلي runtime |
💡 نصائح عملية
- أعد تعريف toString() و equals() و hashCode() معًا دائمًا في أي صنف مخصص
- استخدم Objects.equals(a, b) لمقارنة آمنة تتحمل null
⚠️ أخطاء شائعة
- الاعتماد على == لمقارنة كائنات — تقارن المرجع لا المحتوى
- أعد تعريف equals() بدون hashCode() — يسبب سلوكيًا خاطئًا مع HashSet و HashMap
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.