الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ماهي جميع الحالات التي يجب علي فيها استعما super

بدأه BlackBeard في 17 سبتمبر 2010 · 31 رد · 1,735 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله تعالى وبركاته

كيف حالكم إن شاء الله تكونوا طيبين و بصحة جيدة

أريد معرفة جميع الحالات التي يجب علي فيها استعمال super

أعلم أنها تعبر عن الفئة الأم لكني لم أستعملها من قبل و يمكن من خلالها استدعاء أي دالة من هذه الفئة

و شكرا لكم

showimagephp.jpg

#2

تستخدم فى عمليات الوراثه

يعنى ان كان هناك class ترث من class

ممكن تقول

super(paramters here);

ليه ؟

لان لو هناك بناء للـ class التى انت ترث منها

ويكون هذا البناء بيأخذ قيم

مثلا

public class A{
public A(int x , int y){
}

}

public class B extends A{
public B(int z){
super(10 , 9 );
}

كدا انا وضعت فى البناء الخاص بالـ A class

x = 10 , y = 9

دائما تستخدم فى الوراثه

ممكن تلاحظها فى الـ JDialog

مثلا

public class SalawatTimeSettings extends javax.swing.JDialog {
 public SalawatTimeSettings(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
}
// code here
}

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 18 سبتمبر 2010 في 16:08

1

Software Developer
Mahmoudkelany.com


 

#3

هذه التعليمة موجودة بشكل دائم سواءاً كتبتها أو لو لم تكتبها

والهدف منها ماداة صانع كائنات معين في الفئة الأب

في حال لم تكتبها فإنها تنادي صانع الكائنات الافتراضي

إذا لم ترد أن يتم مناداة صانع الكائنات الافتراضي فيجب عليك أن تكتب الجملة

بالمناسبة لو كان الأب لا يوجد فيه صانع كائنات افتراضي فإنك مجبر على كتابتها

تحياتي

1
حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#4
Mahmoud Kelany كتب:

تستخدم فى عمليات الوراثه

يعنى عندك class ترث من class

ممكن تقول

super(paramters here);

ليه بقا ؟

علشان لو فيه بناء للـ class اللى انت بترث منها

ويكون البناء دا بياخد قيم

مثلا كدا

public class A{
public A(int x , int y){
}

}

public class B extends A{
public B(int z){
super(10 , 9 );
}

كدا انا حطيت فى البناء بتاع الـ A class

x = 10 , y = 9

دائما تستخدم فى الوراثه

ممكن تلاحظها فى الـ JDialog

زى كدا

public class SalawatTimeSettings extends javax.swing.JDialog {
 public SalawatTimeSettings(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
}
// code here
}

+1

مشكور أخي الكريم على مشاركتك لكن أظنها مخالفة لأنها بالهجة المصرية wink.gif

علاء الصالحي كتب:

هذه التعليمة موجودة بشكل دائم سواءاً كتبتها أو لو لم تكتبها

والهدف منها ماداة صانع كائنات معين في الفئة الأب

في حال لم تكتبها فإنها تنادي صانع الكائنات الافتراضي

إذا لم ترد أن يتم مناداة صانع الكائنات الافتراضي فيجب عليك أن تكتب الجملة

بالمناسبة لو كان الأب لا يوجد فيه صانع كائنات افتراضي فإنك مجبر على كتابتها

تحياتي

+1

هل ممكن توظيح أكثر بمثال أكثر دقة لما قلته لي

و جزاك الله ألف خير

تم تعديل هذه المشاركة بواسطة BlackBeard في 17 سبتمبر 2010 في 23:26

showimagephp.jpg

#5

أي نقطة بالضبط أخي؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#6
علاء الصالحي كتب:

أي نقطة بالضبط أخي؟

تحياتي

هذه إن أمكن

إذا لم ترد أن يتم مناداة صانع الكائنات الافتراضي فيجب عليك أن تكتب الجملة

و إن استطعت التي بعدها blush.gif

و شكرا لك

showimagephp.jpg

#7
BlackBeard كتب:

+1

مشكور أخي الكريم على مشاركتك لكن أظنها مخالفة لأنها بالهجة المصرية wink.gif

هههههه

ماشى

بس هيا مش اوى

خلاص عدلت لك المشاركه ولا تزعل نفسك خالص :D

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 18 سبتمبر 2010 في 16:08

Software Developer
Mahmoudkelany.com


 

#8

المثال الخاص بجزئيه عموو علاء

public class Point {

    int x;
    int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

لو لم يكن لديك بناء افتراضى فى هذه الـ Point class

واردت ان ترث منها

سوف تجد انه اعطاك خطأ اثناء الوراثه

لماذا ؟

لانه يريد منك ان تقوم بوضع قيم للـ x , y التى انت ترثهم

يعنى مثلا افعل هكذا

public class Circle extends Point {

}

اول ما تعمل ان Circle extends Point

هتلاقى البرنامج ظهر لك خط احمر تحت هذا السطر

واكيد وضحنا ليه

طب الحل ف كدا ايه ؟

انك لازم تستخدم super

public class Circle extends Point {

    public Circle() {
        super(10, 10);
    }
}

او انت لا تريد ان تقوم بوضع قيم الـ x , y

اذهب الى الـ point class

وقم بعمل بناء افتراضى هكذا

public class Point {

    int x;
    int y;

    public Point() {
    }

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

اتمنى ان تكون الجزئيه هذه وضحت ومفروغ منها

1

Software Developer
Mahmoudkelany.com


 

#9

ماشاء الله عليك يا أخ محمود :)

أي توضيح أنا جاهز

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#10
Mahmoud Kelany كتب:

المثال الخاص بجزئيه عموو علاء

public class Point {

    int x;
    int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

لو لم يكن لديك بناء افتراضى فى هذه الـ Point class

واردت ان ترث منها

سوف تجد انه اعطاك خطأ اثناء الوراثه

لماذا ؟

لانه يريد منك ان تقوم بوضع قيم للـ x , y التى انت ترثهم

يعنى مثلا افعل هكذا

public class Circle extends Point {

}

اول ما تعمل ان Circle extends Point

هتلاقى البرنامج ظهر لك خط احمر تحت هذا السطر

واكيد وضحنا ليه

طب الحل ف كدا ايه ؟

انك لازم تستخدم super

public class Circle extends Point {

    public Circle() {
        super(10, 10);
    }
}

او انت لا تريد ان تقوم بوضع قيم الـ x , y

اذهب الى الـ point class

وقم بعمل بناء افتراضى هكذا

public class Point {

    int x;
    int y;

    public Point() {
    }

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

اتمنى ان تكون الجزئيه هذه وضحت ومفروغ منها

وضحت بنسبة 100%

شكرا لك على هذا المثال الدقيق أخ محمود

showimagephp.jpg

#11
BlackBeard كتب:

وضحت بنسبة 100%

شكرا لك على هذا المثال الدقيق أخ محمود

طيب الحمدلله

ملحوظه

هامه اوووى

الـ super لازم تكون اول سطر فى الـبناء

يعنى لو فعلت كدا

    public Circle() {
        System.out.println("Done");
        super(19, 19);
    }

هيقولك غلط

مع انك كاتب اول سطر هو سطر طباعه

يعنى مش عاوز حاجه من الـ point class

اصل لو منطقينا انت محتاج حاجه من الـ point class

كنا هنقول انه اعترض بسبب كدا

لكن الاعتراض الاساسى انك لازم تكون الـ super اول سطر فى البناء

public Circle() {
        super(19, 19);
        System.out.println("Done");
    }

كدا لا يعترض :D

بالتوفيق

:) :) :) :wub: :wub:

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 18 سبتمبر 2010 في 23:37

1

Software Developer
Mahmoudkelany.com


 

#12

مشكور الأخ محمود على التنبيه

قبل أن يتم غلق الموضوع أردت أن سألكم عن جزء من هذا الكود

class BallPanel extends JPanel{
public void add(Ball b){
balls.add(b);
}

public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
for  (Ball b:balls){
g2.fill(b.getShape());
}
}
private ArrayList<Ball> balls = new ArrayList<Ball>();
}

ما هو داعي استعمال ال super هنا

تعبتكم معي أرجوا المعذرة smile.gif

تم تعديل هذه المشاركة بواسطة BlackBeard في 19 سبتمبر 2010 في 00:03

showimagephp.jpg

#13
BlackBeard كتب:

قبل أن يتم غلق الموضوع أردت أن سألكم عن جزء من هذا الكود

class BallPanel extends JPanel{
public void add(Ball b){
balls.add(b);
}

public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
for  (Ball b:balls){
g2.fill(b.getShape());
}
}
private ArrayList<Ball> balls = new ArrayList<Ball>();
}

ما هو داعي استعمال ال super هنا

تعبتكم معي أرجوا المعذرة smile.gif

هههههههه :wacko: :wacko:

العفو :lol:

ليه هيتم اغلاق الموضوع

المهم

انت فى استخدام الـ

super.paintComponent(g);

استدعيت الداله اللى اسمها paintComponent الموجوده فى الـ JPanel class

وهذه الداله تاخذ متغير من نوع Graphics فانت اعطيت لها المتغير اللى اسمه g بتاعك اللى انت تريد ان تعمل له override

جرب تحذفها هتلاقى الكود باذن الله شغال :D

بالتوفيق :wub:

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 19 سبتمبر 2010 في 00:06

Software Developer
Mahmoudkelany.com


 

#14
Mahmoud Kelany كتب:

هههههههه :wacko: :wacko:

العفو :lol:

ليه هيتم اغلاق الموضوع

المهم

انت فى استخدام الـ

super.paintComponent(g);

استدعيت الداله اللى اسمها paintComponent الموجوده فى الـ JPanel class

وهذه الداله تاخذ متغير من نوع Graphics فانت اعطيت لها المتغير اللى اسمه g بتاعك اللى انت تريد ان تعمل له override

جرب تحذفها هتلاقى الكود باذن الله شغال :D

بالتوفيق :wub:

المثال لم يكن من عندي لقد وجده في كتاب core java

هل عدم وضعها كتركها wacko.gif

showimagephp.jpg

#15
BlackBeard كتب:

المثال لم يكن من عندي لقد وجده في كتاب core java

هل عدم وضعها كتركها wacko.gif

انا بالنسبه لى لم بحذفها عادى

الكود بيشتغل

لكن بصراحه انا لسه مش اوى فى الـ Graphics فعلشان كدا معرفش ليها تأثير ولا لا

هابحث كدا واشوف

او ننتظر رد احد خبرائنا او مشرفينا العظماء

Software Developer
Mahmoudkelany.com


 

#16
Mahmoud Kelany كتب:

انا بالنسبه لى لم بحذفها عادى

الكود بيشتغل

لكن بصراحه انا لسه مش اوى فى الـ Graphics فعلشان كدا معرفش ليها تأثير ولا لا

هابحث كدا واشوف

او ننتظر رد احد خبرائنا او مشرفينا العظماء

هلا قمت بتجربة هذا المثال الذي بالمرفقات

threadTest.zip

showimagephp.jpg

#17
BlackBeard كتب:

هلا قمت بتجربة هذا المثال الذي بالمرفقات

قومت بتجربته لكن

ماذا به ؟

لا افهم المطلوب

post-217802-023524700 1284848570_thumb.p

المرفقات
ball.png

Software Developer
Mahmoudkelany.com


 

#18

هل رأيت ما حدث عندما حذفت ذلك السطر

المفروض أن هناك كرة تنزل

أعد كتابة السطر الذي سألتك عنه

و جرب بعد ذلك

showimagephp.jpg

#19
BlackBeard كتب:

هل رأيت ما حدث عندما حذفت ذلك السطر

المفروض أن هناك كرة تنزل

أعد كتابة السطر الذي سألتك عنه

و جرب بعد ذلك

post-217802-013239800 1284849206_thumb.p

تسلم لى ها العيون

لكن هل عندك تفسير :lol:

انا قولت لك انى مش باعرف Graphics

انا جربتها فى مثال قبل كدا ومش اثر معايا

هادور عليه واقبى اضعه لك

وان الموضوع اغلق هاقبى ابعته لك ف رساله

لكن دلوقتى عاوزين تفسير لتأثير هذه الجمله فى الكود

super.paintComponent(g);
المرفقات
ball2.png

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 19 سبتمبر 2010 في 01:37

Software Developer
Mahmoudkelany.com


 

#20
Mahmoud Kelany كتب:

post-217802-013239800 1284849206_thumb.p

تسلم لى ها العيون

لكن هل عندك تفسير :lol:

انا قولت لك انى مش باعرف Graphics

انا جربتها فى مثال قبل كدا ومش اثر معايا

هادور عليه واقبى اضعه لك

وان الموضوع اغلق هاقبى ابعته لك ف رساله

لكن دلوقتى عاوزين تفسير لتأثير هذه الجمله فى الكود

super.paintComponent(g);

التفسير

هذا ما أبحث عنه أنا أيظا

laugh.gif

احترت في أمرها

هل هي تقوم بإعادة الرسم أم مذا تفعل

شكرا على المساعدة

ننتظر من له رأي في هذه المشكلة

showimagephp.jpg

#21
BlackBeard كتب:

التفسير

هذا ما أبحث عنه أنا أيظا

laugh.gif

احترت في أمرها

هل هي تقوم بإعادة الرسم أم مذا تفعل

شكرا على المساعدة

ننتظر من له رأي في هذه المشكلة

هو انا اقدر اسيبك

بحثت لك فى الموضوع

بص يا سيدى الفاضل

كل مره بيستدعى فيها الداله بتاعت الـpaintComponent

اللى انت عامل ليها override

هذه

 public void paintComponent(Graphics g) {
//code here
}

اول حاجه يعملها انه يمسح كل حاجه موجوده فى الـ Jpanel

يمسحها ازاى بقا

بالامر

 super.paintComponent(g);

يعنى كل مره اقوله اجعل الرسمه بتاعت الـ JPanel بالـ g

اللى هيا اساسا مش فيها حاجه فالبتالى بيخلى الـJpanel فارغه

فهو كل مره يعيد رسمها

يهيأ اليك ان الكره تتحرك :)

بالتوفيق يا عزيزى :) :wub:

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 19 سبتمبر 2010 في 02:32

1

Software Developer
Mahmoudkelany.com


 

#22
Mahmoud Kelany كتب:

هو انا اقدر اسيبك

بحثت لك فى الموضوع

بص يا سيدى الفاضل

كل مره بيستدعى فيها الداله بتاعت الـpaintComponent

اللى انت عامل ليها override

اول حاجه يعملها انه يمسح كل حاجه موجوده فى الـ Jpanel

يمسحها ازاى بقا

بالامر

 super.paintComponent(g);

يعنى كل مره اقوله اجعل الرسمه بتاعت الـ JPanel بالـ g

اللى هيا اساسا مش فيها حاجه فالبتالى بيخلى الـJpanel فارغه

فهو كل مره يعيد رسمها

يهيأ اليك ان الكره تتحرك :)

بالتوفيق يا عزيزى :) :wub:

تعبتك معاي أخ محمود

على حسب مافهمته منك أنه يعيد تهيئة ال JPanel برسمته الأصلية =و التي لا تحتوي على شيئ=

ثم يعيد رسم الكرة

هناك دالة أظنها تعمل هذا و هي ال repaint()

شكرا على المساعدة smile.gif

أتمنى لك أن تحقق هدفك بأنك تتعلم Java كأنك أنت الذي صنعتها happy.gif

بالتفويق

showimagephp.jpg

#23
BlackBeard كتب:

تعبتك معاي أخ محمود

على حسب مافهمته منك أنه يعيد تهيئة ال JPanel برسمته الأصلية =و التي لا تحتوي على شيئ=

ثم يعيد رسم الكرة

هناك دالة أظنها تعمل هذا و هي ال repaint()

شكرا على المساعدة smile.gif

أتمنى لك أن تحقق هدفك بأنك تتعلم Java كأنك أنت الذي صنعتها happy.gif

بالتفويق

لا ولايهمك ما فى شىء

المهم

هي فعلا بتعيد تهيئه الـ panel وتجعلها فارغه

وانت بالالجوريثم الخاص بك الذى يقوم بالرسم فى خط مستقيم كقطر

تقوم باعاده رسم الكره مره اخرى

وتتضح امامك انها صوره متحركه لكره تتحرك على محور مائل

بالنسبه للـ paintComponent و repaint

لو لاحظت ان هذه فى مكتبه وهذه فى مكتبه اخرى :)

الـ repaint فى مكتبه الـ AWT

والـ paintComponent فى مكتبه الـ SWING

لكن الذى افهمه ان الـ repaint تعيد رسم المكونات بعد اضافه اشياء اخرى عليها مثل JTextFields , JComboBox , JLable , ...

انما الـ paintComponent تعيد رسم تكوين الـ JPanel نفسها وليس المكونات المضافه عليها

اتمنى ان تكون فهمت منى حاجه

يارب جميعا

فعلا اريد ان اعرف كل حاجه فى الجافا

ربنا يوفقنا جميعا يارب

وشكرا على هذه الدعوه الجميله :)

اروح انام شويه بقا عندى كلية بدرى :wub: :wub:

لو فيه حاجه نكمل غداً إن شاء الله :lol:

تم تعديل هذه المشاركة بواسطة Mahmoud Kelany في 19 سبتمبر 2010 في 02:51

Software Developer
Mahmoudkelany.com


 

#24
Mahmoud Kelany كتب:

لا ولايهمك ما فى شىء

المهم

هي فعلا بتعيد تهيئه الـ panel وتجعلها فارغه

وانت بالالجوريثم الخاص بك الذى يقوم بالرسم فى خط مستقيم كقطر

تقوم باعاده رسم الكره مره اخرى

وتتضح امامك انها صوره متحركه لكره تتحرك على محور مائل

بالنسبه للـ paintComponent و repaint

لو لاحظت ان هذه فى مكتبه وهذه فى مكتبه اخرى :)

الـ repaint فى مكتبه الـ AWT

والـ paintComponent فى مكتبه الـ SWING

لكن الذى افهمه ان الـ repaint تعيد رسم المكونات بعد اضافه اشياء اخرى عليها مثل JTextFields , JComboBox , JLable , ...

انما الـ paintComponent تعيد رسم تكوين الـ JPanel نفسها وليس المكونات المضافه عليها

اتمنى ان تكون فهمت منى حاجه

يارب جميعا

فعلا اريد ان اعرف كل حاجه فى الجافا

ربنا يوفقنا جميعا يارب

وشكرا على هذه الدعوه الجميله :)

اروح انام شويه بقا عندى كلية بدرى :wub: :wub:

لو فيه حاجه نكمل غداً إن شاء الله :lol:

فهمت حاجات و ليس فقط حاجة و حدة happy.gif

شكرا تصبح على خير

تم تعديل هذه المشاركة بواسطة BlackBeard في 19 سبتمبر 2010 في 02:57

showimagephp.jpg

#25
BlackBeard كتب:

فهمت حاجات و ليس فقط حاجة و حدة happy.gif

شكرا تصبح على خير

طب الحمدلله :)

هذا فضل ونعمه من الله

على فكرا :excl: حظك حلو ان عمووو علاء مش موجود

كنت هتلاقيه عمل كدا :stop:

و قفل الموضوع بالشمع الأحمر :wub:

:) :haha:

وانت من اهل الخير يارب :)

يلا

سلام عليكم

Software Developer
Mahmoudkelany.com


 

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…