Learn Typing Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Computer Fundamentals English English Conversations Problem Solving

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;
}
}
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 سيتم إستدعاء الكونستركتور الإفتراضي الموجود في الكلاس
}
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);
}
}
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
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;
}
}
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 سيتم إستدعاء كونستركتور الكلاس
}
}
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);
}
}
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
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;
}
}
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 هنا سيتم تبديل قيمة المتغير
}
}
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);
}
}
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
In class B we have: x: 9 y: 100 z: 123 In class A we have: x: 50 y: 100

الدورات

أدوات مساعدة

أقسام الموقع

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