Java أمثلة حول طرق إستدعاء كونستركتور لا يحتوي باراميترات من الـسوبر كلاس في جافا

في المثال التالي قمنا بتعريف كلاس إسمه A يحتوي على متغيرين x و y بالإضافة إلى كونستركتور لا يقبل أي باراميتر و مهمته بتوليد قيم لهما فقط.
بعدها قمنا بإنشاء كلاس إسمه B يرث من الكلاس A.

بعدها سنقوم بإنشاء الكلاس Main لتجربة الكود.

المثال الأول

A.java
public class A {
 
    public int x;
    public int y;
 
    // A هنا قمنا بتعريف الكونستركتور الإفتراضي للكلاس
    // سيتم تنفيذه بشكل تلقائي في أي كلاس يرث منه .A و بما أنه لا يوجد غيره في الكلاس
    public A() {
        x = 50;
        y = 100;
    }
 
}
		

B.java
public class B extends A {          // A يرث من الكلاس B هنا قلنا أن الكلاس
 
    // أي عند إنشاء كائن منه ,B عند استدعاء الكونستركتور الإفتراضي للكلاس
    // حتى و إن لم نقم باستدعائه A سيتم إستدعاء الكونستركتور الإفتراضي الموجود في الكلاس
 
}
		

Main.java
public class Main {
 
    public static void main(String[] args) {
 
        // A من أجل عرض قيم المتغيرات التي ورثها من الكلاس B هنا قمنا بإنشاء كائن من الكلاس
        B b = new B();
 
        System.out.println("x: " + b.x);
        System.out.println("y: " + b.y);
 
    }
 
}
		

سنحصل على النتيجة التالية عند التشغيل.

x: 50
y: 100 
		



في المثال التالي قمنا بكتابة نفس الكود السابق مع إستدعاء كونستركتور الكلاس A في كونستركتور الكلاس B.
تذكر أنه لا يوجد داعي لكتابة هذا الكود لأن مترجم لغة جافا يفعل ذلك بشكل تلقائي عنك.

المثال الثاني

A.java
public class A {
 
    public int x;
    public int y;
 
    // A هنا قمنا بتعريف الكونستركتور الإفتراضي للكلاس
    // سيتم تنفيذه بشكل تلقائي في أي كلاس يرث منه .A و بما أنه لا يوجد غيره في الكلاس
    public A() {
        x = 50;
        y = 100;
    }
 
}
		

B.java
public class B extends A {    // A يرث من الكلاس B هنا قلنا أن الكلاس
 
                              // نفس الشرح السابق تماماً, لكن هنا يمكنك القول أننا ذكرنا ما حدث بتفصيل
    public B() {              // B عند استخدام هذا الكونستركتور لإنشاء كائن من الكلاس
        super();              // A سيتم إستدعاء كونستركتور الكلاس
    }
 
}
		

Main.java
public class Main {
 
    public static void main(String[] args) {
 
        // A من أجل عرض قيم المتغيرات التي ورثها من الكلاس B هنا قمنا بإنشاء كائن من الكلاس
        B b = new B();
 
        System.out.println("x: " + b.x);
        System.out.println("y: " + b.y);
 
    }
 
}
		

سنحصل على النتيجة التالية عند التشغيل.

x: 50
y: 100 
		



في المثال التالي قمنا بكتابة نفس الكود السابق مع تعريف متغير جديد في الكلاس B إسمه z و إعطائه قيمة في الكونستركتور, و تغيير قيمة المتغير x في كونستركتور الكلاس B.
عند تجربة الكود سنقوم بعرض قيم المتغيرات الموجودة في A و B.

الهدف الحقيقي هنا إيصال فكرة أن الـ Subclass يمكنه إستخدام الأشياء التي ورثها من الـ Superclass كما يشاء.

المثال الثالث

A.java
public class A {
 
    public int x;
    public int y;
 
    // A هنا قمنا بتعريف الكونستركتور الإفتراضي للكلاس
    // سيتم تنفيذه بشكل تلقائي في أي كلاس يرث منه .A و بما أنه لا يوجد غيره في الكلاس
    public A() {
        x = 50;
        y = 100;
    }
 
}
		

B.java
public class B extends A {    // A يرث من الكلاس B هنا قلنا أن الكلاس
 
    public int z;             // z هنا قمنا بتعريف المتغير
 
    public B() {              // B عند استخدام هذا الكونستركتور لإنشاء كائن من الكلاس
        super();              // A سيتم إستدعاء كونستركتور الكلاس
        z = 123;              // z و سيتم إعطاء قيمة للمتغير
        x = 9;                // A بالقيمة 9, مع الملاحظة أنها ستبقى 50 في أي كائن من الكلاس B في أي كائن من الكلاس x هنا سيتم تبديل قيمة المتغير
    }
 
}
		

Main.java
public class Main {
 
    public static void main(String[] args) {
 
        // A من أجل عرض قيم المتغيرات التي ورثها من الكلاس B هنا قمنا بإنشاء كائن من الكلاس
        B b = new B();
 
        System.out.println("In class B we have:");
        System.out.println("x: " + b.x);
        System.out.println("y: " + b.y);
        System.out.println("z: " + b.z);
 
        System.out.println();
 
        // من أجل التأكد من أن قيم متغيراته لا تتأثر إذا تم تغيير نفس المتغيرات في أي كلاس يرث منه A هنا قمنا بإنشاء كائن من الكلاس
        A a = new A();
 
        System.out.println("In class A we have:");
        System.out.println("x: " + a.x);   // B الموجود في الكلاس x مختلفة عن قيمة المتغير A الموجود في الكلاس x لاحظ كيف أن قيمة المتغير
        System.out.println("y: " + a.y);
 
    }
 
}
		

سنحصل على النتيجة التالية عند التشغيل.

In class B we have:
x: 9
y: 100
z: 123

In class A we have:
x: 50
y: 100
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة