الشذوذ والأخطاء

إذا كانت لديك عمليات كائنية وعمليات أصناف في نفس الصنف، فمن السهل أن تضيع. الطريقة الشائعة لتنظيم تعريف الصنف هي وضع كافة عمليات البناء في البداية، متبوعة بكل العمليات الكائنية ثم عمليات الصنف.
يمكن أن توجد عملية كائنية وعملية صنف بنفس الاسم، طالما أنهما تختلفان في عدد المعاملات أو نوعها. وكما يحصل مع الأنواع الأخرى من التحميل الزائد (overloading)، تقرر Java أي نسخة من العملية ستستدعيها بالنظر إلى المتحولات التي تعطيها.
الآن وقد بتنا نعرف معنى الكلمة المفتاحية static، ستكون قد استنتجت على الأغلب أن main هي عملية صنف، ما يعني عدم وجود "كائن حالي" عند استدعائها.
نظراً لعدم وجود كائن حالي في عمليات الأصناف، من الخطأ استعمال الكلمة المفتاحية this. إذا حاولت عمل ذلك، ستحصل على رسالة خطأ مثل: "Undefined variable: this" – "متغير غير معرّف: this".
كما لا يمكنك الوصول إلى متغيرات الحالة بدون استخدام النقطة وتوفير اسم كائن. إذا حاولت عمل ذلك، ستحصل على رسالة مثل "non-static variable… cannot be referenced from a static context". يقصد المجمع بكلمة "non-static variable" أن يقول: "متغير حالة" — "instance variable".


lk ;jhf ;dt jt;v ;uhgl ;lfd,jv gyi [hth hgohls uavhgfvl[m ;hzkdm hgj,[~i : hga`,` ,hgHo'hx hgj,[~i hgohls hga`,` jt;v [hth uavhgfvl[m ,hgHo'hx ;lfd,jv ;hzkdm ;jhf ;dt