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

ماذا تعمل super?

مغلق
بدأه طالبة علم2 في 5 أبريل 2003 · 16 رد · 1,283 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

ماذا تعمل هذه الدالة "super "؟

بعض الأحيان تكتب (super(file name ماذا يعني ذلك ؟

بحثت عن الشرح في بعض الكتب ولكني لم أجد شرح واضح

أرجو التوضيح قدر المستطاع .

#2

هي دالة تستخدم داخل ال constructor لل children class للرجوع الى ال constructor تبع ال parent class ويجب أن تكون أول جملة داخل الكونستركتر

وقد يكون لها أهداف أخرى وأنا لا أعلمها:o

وأي خدمة أنا حاضر

#4

شكرا على التوضيح

سأحاول أن أكتب برنامج بسيط يوضح لي الفكرة أكثر

#5

للأسف ماني قادرة أفهم طريقة عمل super وأحس أنها مرة مهمة

لاااااااااازم أفهمها بس مشكلة الكتاب اللي عندي أنه الأمثلة معقدة شوي وما يشرح كل شيء

يا ريت يا أخ محمد -اذا ما كنت مشغول- تشرح لنا باستخدام أمثلة بسيطة

#6

ضعي المثال اللي قرأتيه في الكتاب وان شاء الله نشرحه

اذا ما كان معقد او نأتي بمثال سهل

...

#7
// Definition of class Circle

public class Circle extends Point {  // inherits from Point
   protected double radius;

   // No-argument constructor
   public Circle()
   {
      // implicit call to superclass constructor occurs here
      setRadius( 0 );  
   }

   // Constructor
   public Circle( double r, int a, int b )
   {
      super( a, b );  // call to superclass constructor
      setRadius( r );  
   }

   // Set radius of Circle
   public void setRadius( double r ) 
      { radius = ( r >= 0.0 ? r : 0.0 ); }

   // Get radius of Circle
   public double getRadius() { return radius; }

   // Calculate area of Circle
   public double area() { return Math.PI * radius * radius; }

   // convert the Circle to a String
   public String toString()
   {
      return "Center = " + "[" + x + ", " + y + "]" +
             "; Radius = " + radius;
   }
}

هذا هو أبسط كود وجدته

ياريت يكون الشرح مركز فقط على super لأني فاهمة الأشياء الثانية

#8

ممتاز

مثال سهل

---------------------

اولا النقطة (Point)

هي عبارة عن كلاس له كونستركتر

وهذا الكونستركتر يحتاج حاجتين هما :

احداثي النقطة على محور السينات x

واحداثي النقطة على محور الصادات y

اما الدائرة

فحتى تعملها نحتاج الى الى نقطة المركز وهي عبارة عن Object من كلاس Point

و نصف القطر radius

ولان الدائرة سب كلاس للنقطة

فاننا نستطيع مناداة ال Consturctor للنقطة

في ال Constuctor للدائرة

بشرط ان يكون اول سطر يكتب

وفائدة هذا هو

عدم التكرار

فنحن نستفيد من ال Constuctor للنقطة

فنناديه

بهذا الكود

 super( a, b );

و a هي الاحداثي السيني

و b هي الاحداث الصادي

وبذلك نكون حصلنا على النقطة !

اذا يبقى لنا تحديد نصف القطر حتى نحصل على دائرة

ويكون ذلك عن طريق

 setRadius( r );

ارجو ان اكون وفقت في الشرح واذا كان هناك اسئلة ان شاء الله نجاوبها

......

#9

شرح ممتاز :)

يعني بالمختصر المفيد قيم a, b تاخذها من الكلاس Point .. و الـ r تكون خاصه بالكلاس Circle ..

#10

:)

احنا ناخذ من الكلاس Point

اوبجكت من نوع point

اما a , b فهي عبارة عن بارميتير احنا نرسلها الى كلاس Point ونقول له

عطنا يابوالشباب اوبجكت من عندك :D

===================================

وفي حاجة نسيتها

الكونستركتر لاي سبكلاس ينادي (By defult) ال defult كونستركتر لل super class

بدون ما نستخدم كلمة super

الا اذا استخدمنا كلمة super وحدد لها بارميتير معينة لتحدد اي كونستركتر نريده ؟

في مثالنا هذا

الكونستركتر الاول وهو هذا

public Circle()

   {

      // implicit call to superclass constructor occurs here

      setRadius( 0 );  

   }

هو ال defult كونستركتر للدائرة

بمعنى انك اذا ناديت هذا الكونستركتر فانك تعمل Object بالقيم الافتراضية

وهي اصفار لانها من نوع int

وفي هذا الكونستركتر

تمت مناداة ال defult كونستركتر لل Point وهو كونستركتر يعطي قيم اصفار

ثم تم تحديد نصق القطر بصفر كما نرى في المثال ....

#11

بسم الله الرحمن الرحيم

تسلم أيدك أخى JP3003 لم تترك شيئا يقال ;)

مداخلة أخيرة صغيرة ان super غالبا تستخدم للوصول الى الأعضاء Private فى فصيلة الأساس من داخل الفصيلة المشتقة و هذا أهم فائدة لها.

خالد المصرى

#12

جزاك الله خيرا يا أخ JP3003

أنا الآن فاهمة super بشكل كلي

والصراحة من الشرح تصححت بعض المفاهيم اللي كنت فاهمتها غلط

شكرا لك

#13

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

أنا آسف جدا ً يا أخت طالبة علم على التأخير لأني حاليا ص مشغول مع تسجيل المواد في الجامعة (جامعة البترول ) والأخ صلاح عارف مشاكل التجيل هنا أكيد.

وإن شاء الله أنا الآن أعد لدرس عن استخدامات هذه الكلمة وبإذن الله راح أضعه قريبا ً (clock)(clock)(clock)

والسلام:cool:

#14

شكرا جزيلا على اهتمامك

والأخوان ما قصروا .........

وان شاء الله الدرس يكون مفيد لكل أعضاء المنتدى المبتدئين .

وفق الله الجميع لما يحبه ويرضاه ..........

#15
package testsuper;
import testsuper.*;
import java.io.*;
public class SubClass extends SuperClass
{
    public void methode1()//overload 
    {
        System.out.println(" Call Subclass Methode1");
        super.methode1();

    }
    public static void main(String args)
    {
        SubClass obj=new SubClass();
        obj.methode1();

    }

}
اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#16

package testsuper;

import java.io.*;

public class SuperClass

{

public void methode1()

{

System.out.println("Call Super Methode1");

}

}

اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء
#17
package testsuper;
import java.io.*;
public class SuperClass

{

    public  void methode1()
    {
        System.out.println("Call Super Methode1");
    }
}
اللهم انا نسألك علما نافعا ونعوذ بك من حماقة الجهلاء

هذا الموضوع مغلق.

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