هل يجب عليك الاتصال بشكل صريح بمنشئ الفئة الفائقة في فئات Java الفرعية؟ مُنشئ الطبقة الفائقة باستخدام super(). ومع ذلك، قد يتساءل المرء عما إذا كان هذا ضروريًا.
هل تمت إضافة super() تلقائيًا بواسطة المترجم؟
نعم، إذا أغفل مُنشئ الفئة الفرعية استدعاء الفئة الفائقة منشئ، سيقوم المترجم تلقائيًا باستدعاء المُنشئ بدون وسيطات الذي يمكن الوصول إليه (منشئ بدون وسيطات) في الفئة الفائقة. يُعرف هذا السلوك الافتراضي باسم تسلسل المنشئ
.أنواع المنشئات
المنشئ بدون وسيطات:
استخدام super () بشكل صريح هو فقط مطلوب إذا:
لا تحتوي الفئة الفائقة على مُنشئ يمكن الوصول إليه بدون وسيطات.
قاعدة الطبقة العامة {} الطبقة العامة المشتقة توسع القاعدة {}
public class Base {}
public class Derived extends Base {}
المثال 2:
قاعدة الطبقة العامة { القاعدة العامة (int i) {} } الطبقة العامة المشتقة تمتد القاعدة { مشتق عام (int i) { سوبر (أنا)؛ // استدعاء مُنشئ Base(int) بشكل صريح }
public class Base {
public Base(int i) {}
}
public class Derived extends Base {
public Derived(int i) {
super(i); // Explicitly call the Base(int) constructor
}
}
من خلال فهم هذه المفاهيم، يمكنك تجنب استدعاءات super() غير الضرورية والتأكد من تسلسل المنشئ المناسب في الفئات الفرعية الخاصة بك. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3