تخطَّ إلى المحتوى

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 الكامل بالعربي.