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

كام سؤال محيرنى ؟؟؟

بدأه NarutoMan في 11 نوفمبر 2010 · 5 رد · 441 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

انا كان عندى كام سؤال لم افهمهم يا ريت حد ينورنى ويفهمنى :

1 - ليه لما نعمل class جديدة بعمل default constructor حتى لو لم يكن له فائدة ولا يحتوى على code وان ال compiler بيعمل default constructor لو لم يكن موجود فى ال class

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

2 - سؤال مشابه للاول لما نعمل abstract class بعرف protected constructor ليه ؟؟؟ وهل هو default constructor ولا لا ؟؟؟

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

3 - ليه بحتاح اعمل child object من نوع ال parent class زى كدة

parentClassName object = new  childClassName( );

مثل GeometricObject class دى كلاس بنحنوى جميع الخصائص لكل الاشكال مثل الدائرة والمستطيل الخ

ليه اعمل



 GeometricObject geoObject1 = new Circle(5);

ومعملش

Circle geoObject1 = new Circle(5);

(ممكن تكون الاسئله دى غبية وعبيطة بالنسبة لكم انتم بلغتم النخل طولا اما انا نبتة على الارض)

وشكرا

تم تعديل هذه المشاركة بواسطة NarutoMan في 11 نوفمبر 2010 في 02:10

#2
NarutoMan كتب:

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

انا كان عندى كام سؤال لم افهمهم يا ريت حد ينورنى ويفهمنى :

1 - ليه لما نعمل class جديدة بعمل default constructor حتى لو لم يكن له فائدة ولا يحتوى على code وان ال compiler بيعمل default constructor لو لم يكن موجود فى ال class

لان تنفيذ الكلاس فى اول مره يعنى عند استدعاء الاوبجكت منها اول حاجه بتتنفذ فيها

فبالتالى لابد من وجود كنستراكتور لها ليه بقا بيعمل default constructor لو لم يكن موجودا لنفس السبب

بس دا بينشأ اثناء التشغيل فقط ولا يكتب فى الكود

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

2 - سؤال مشابه للاول لما نعمل abstract class بعرف protected constructor ليه ؟؟؟ وهل هو default constructor ولا لا ؟؟؟

انا مجربتش انى اعملها protected constructor بس دا هيكون علشان عمليه الوراثه بين الclasses لانك الـ abstract class اكيد فيه classes اخرى هتورث منها

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

3 - ليه بحتاح اعمل child object من نوع ال parent class زى كدة

parentClassName object = new  childClassName( );

مثل GeometricObject class دى كلاس بنحنوى جميع الخصائص لكل الاشكال مثل الدائرة والمستطيل الخ

ليه اعمل



 GeometricObject geoObject1 = new Circle(5);

ومعملش

Circle geoObject1 = new Circle(5);

دا بيكون حاجه اسمها polymorphism وتستخدم عندما هيكون هناك وراثه

ان انا عندى الـ parent مممكن اشير الى اى child وارث منه

لكن فى نفس الوقت الـchild محتفظ بنفس خصائصه

لان الاوبجكت تم انشائه من النوع المخصص ليه لكن تم وضعه فى reference من نوع الـ Parent

تستخدم عمليا ف ايه ؟

تستخدم مثلا فى البرنامج بتاعك عاوز اعمل arrray of GeometricObject

بس كل عنصر فيها متخلف عن الاخر فالبتالى بتلجأ لهذه العمليه :)

(ممكن تكون الاسئله دى غبية وعبيطة بالنسبة لكم انتم بلغتم النخل طولا اما انا نبتة على الارض)

لا والله ؟؟؟ ماشى يا سيدى

اجابتى بالازرق

Software Developer
Mahmoudkelany.com


 

#3
اقتباس

تستخدم مثلا فى البرنامج بتاعك عاوز اعمل arrray of GeometricObject

بس كل عنصر فيها متخلف عن الاخر فالبتالى بتلجأ لهذه العمليه smile.gif

أخي محمود سؤال يعني مختلف عن الأخر تقصد أعمله Casting للكلاس اللي أنا بدي إياه ؟

ولا فكرة ثانية ؟

و لك الشكر

#4
aohammed كتب:

أخي محمود سؤال يعني مختلف عن الأخر تقصد أعمله Casting للكلاس اللي أنا بدي إياه ؟

ولا فكرة ثانية ؟

و لك الشكر

اقصد بها الـpolymorphism

وهذه العمليه توجد فى الوراثه

يعنى

post-217802-035669500 1289532944_thumb.g

عندك فى الصوره

فيه Parent class تسمى Person

وفيه 2 كلاس يرثون من هذه الكلاس

Customer و Employee

وبالتالى ازاى اطبق مبدا الـpolymorphism هنا ؟؟

ان انا عن طريق الـ Parent اشير الى كل Child لى او لاى Child من my child

يعنى عن طريق الاب اشير الى اى إبن لى او اى إبن لإبنى ؟؟ اتمنى ان تكون مفهومه

وبالتالى الكود يكون كذلك

Person p1 = new Employee();
Person p2 = new Customer();

وبالتالى انا كدا عرفت ازاى اشير الى الابناء عن طريق الاب

طيب هل الكائن مثلا p1 يكون نوعه Person ام Employee ؟؟؟

فى هذه الحاله اقولك انت عملت كائن جديد على مين ؟؟؟

هتكون الاجابه على Employee ليه لان دا اللى انا عملت ليه new

و ما فائده الـ p1 انى اضعه فى مرجع من نوع Person او اضعه فى مرجع من نوع Employee

فهو فى كلتا الحالتين هيكون نوعه Employee

لكن تأتى فائده اخرى

عندما اريد ان اقوم باخد مصفوفه خليط من Employee و Customer

تيجى ازاى ؟؟؟

احنا قولنا عن طريق الاب ممكن اوصل للابن ؟

من هذا المنطلق مممكن اعمل المصفوفه على انها Person

Person ps [] = new Person[5];

انا كدا عملت مصفوفه من 5 اشخاص

لكن لم يتم عمل اى new لكل عنصر فيهم

مثلا هاقول ان الاعداد الفرديه هتكون Customer والاخرى تكون Employee

Person ps [] = new Person[5];
for(int i = 0 ; i< ps.lenght ; i++){
if(i%2==0){
ps= new Customer();
}
else{
ps = new Employee();
}
}

اتمنى ان تكون وضحت

المرفقات
inhertance_tree.gif

Software Developer
Mahmoudkelany.com


 

#5

تسلم يا باشا !!!!!!

وصلت الفكرة تمام التمام و يعطيك ألف عافية

#6

الحمد لله فهمت شوية بردة

تشكر على الشرح يا kelany

اللى قبل سؤال aohammed وبعدة والسؤال نفسة جمييل

يلا سلام

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