ماذا تعمل هذه الدالة "super "؟
بعض الأحيان تكتب (super(file name ماذا يعني ذلك ؟
بحثت عن الشرح في بعض الكتب ولكني لم أجد شرح واضح
أرجو التوضيح قدر المستطاع .
ماذا تعمل هذه الدالة "super "؟
بعض الأحيان تكتب (super(file name ماذا يعني ذلك ؟
بحثت عن الشرح في بعض الكتب ولكني لم أجد شرح واضح
أرجو التوضيح قدر المستطاع .
هي دالة تستخدم داخل ال constructor لل children class للرجوع الى ال constructor تبع ال parent class ويجب أن تكون أول جملة داخل الكونستركتر
وقد يكون لها أهداف أخرى وأنا لا أعلمها:o
وأي خدمة أنا حاضر
احيانا تكون اسم العنوان للـ JFrame مثل الـ setTitle
شكرا على التوضيح
سأحاول أن أكتب برنامج بسيط يوضح لي الفكرة أكثر
للأسف ماني قادرة أفهم طريقة عمل super وأحس أنها مرة مهمة
لاااااااااازم أفهمها بس مشكلة الكتاب اللي عندي أنه الأمثلة معقدة شوي وما يشرح كل شيء
يا ريت يا أخ محمد -اذا ما كنت مشغول- تشرح لنا باستخدام أمثلة بسيطة
ضعي المثال اللي قرأتيه في الكتاب وان شاء الله نشرحه
اذا ما كان معقد او نأتي بمثال سهل
...
// 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 لأني فاهمة الأشياء الثانية
ممتاز
مثال سهل
---------------------
اولا النقطة (Point)
هي عبارة عن كلاس له كونستركتر
وهذا الكونستركتر يحتاج حاجتين هما :
احداثي النقطة على محور السينات x
واحداثي النقطة على محور الصادات y
اما الدائرة
فحتى تعملها نحتاج الى الى نقطة المركز وهي عبارة عن Object من كلاس Point
و نصف القطر radius
ولان الدائرة سب كلاس للنقطة
فاننا نستطيع مناداة ال Consturctor للنقطة
في ال Constuctor للدائرة
بشرط ان يكون اول سطر يكتب
وفائدة هذا هو
عدم التكرار
فنحن نستفيد من ال Constuctor للنقطة
فنناديه
بهذا الكود
super( a, b );
و a هي الاحداثي السيني
و b هي الاحداث الصادي
وبذلك نكون حصلنا على النقطة !
اذا يبقى لنا تحديد نصف القطر حتى نحصل على دائرة
ويكون ذلك عن طريق
setRadius( r );
ارجو ان اكون وفقت في الشرح واذا كان هناك اسئلة ان شاء الله نجاوبها
......
شرح ممتاز :)
يعني بالمختصر المفيد قيم a, b تاخذها من الكلاس Point .. و الـ r تكون خاصه بالكلاس Circle ..
:)
احنا ناخذ من الكلاس 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 وهو كونستركتر يعطي قيم اصفار
ثم تم تحديد نصق القطر بصفر كما نرى في المثال ....
بسم الله الرحمن الرحيم
تسلم أيدك أخى JP3003 لم تترك شيئا يقال ;)
مداخلة أخيرة صغيرة ان super غالبا تستخدم للوصول الى الأعضاء Private فى فصيلة الأساس من داخل الفصيلة المشتقة و هذا أهم فائدة لها.
خالد المصرى
جزاك الله خيرا يا أخ JP3003
أنا الآن فاهمة super بشكل كلي
والصراحة من الشرح تصححت بعض المفاهيم اللي كنت فاهمتها غلط
شكرا لك
السلام عليكم ورحمة الله وبركاته ...
أنا آسف جدا ً يا أخت طالبة علم على التأخير لأني حاليا ص مشغول مع تسجيل المواد في الجامعة (جامعة البترول ) والأخ صلاح عارف مشاكل التجيل هنا أكيد.
وإن شاء الله أنا الآن أعد لدرس عن استخدامات هذه الكلمة وبإذن الله راح أضعه قريبا ً (clock)(clock)(clock)
والسلام:cool:
شكرا جزيلا على اهتمامك
والأخوان ما قصروا .........
وان شاء الله الدرس يكون مفيد لكل أعضاء المنتدى المبتدئين .
وفق الله الجميع لما يحبه ويرضاه ..........
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();
}
}package testsuper;
import java.io.*;
public class SuperClass
{
public void methode1()
{
System.out.println("Call Super Methode1");
}
}
package testsuper;
import java.io.*;
public class SuperClass
{
public void methode1()
{
System.out.println("Call Super Methode1");
}
}هذا الموضوع مغلق.