Constructor
Constructor
درسنا اليوم حيكون عن ايش هو الـ Constructor ؟
هي دالة دايم ننشئها داخل الكلاس وتكون بنفس اسم الكلاس.
- ايش حنستفيد منها ؟
من خلالها نقدر نهيئ الأوبجكت لمن ننشئه ويصير الأوبجكت قابل للإستعمال.
بدونها مانقدر نستخدم الأوبجكت
- بس في الدروس السابقة
أنشئنا أوبجكت عادي بدونها
بدون مانضيف داله اسمها نفس اسم الكلاس .. كيف ؟؟؟
لأنو هي تتنشئ تلقائياً إذا نحنا ماكتبناها =)
أول ما نسوي كلاس هي تنكتب افتراضياً
ولمن نجي نسوي Constructor خاص فينا
نسويه زي ماإحنا نبغا
الأفتراضي ينحذف على طول X
- ايش ممكن نسوي في الدالة ؟
ممكن نخليها تعطي قيم للمتغيرات أول مايتنشئ الأوبجكت
بحيث تعطي مثلاً المتغيرات اللي داخل الكلاس قيم أفتراضيه
أو تتعبى بقيم يرسلها الأوبجكت خلال تكوينه
* فالدالة تقدر تخليها تستقبل قيم أو ما تستقبل
وأهم شي هي ماترجع قيمه مو زي الداله العادية
بالطريقة الموضحة نقدر ننشئ كونستركتر :
ونلاحظ إنو ماكتبنا void ولا ReturnType
فقط public + اسم الكلاس
- ايش سوينا في الدالة ؟
فقط قلنا لمن يتنشئ الأوبجكت أعطي قيمة صفر لمتغيرات الأوبجكت الـ x , y
} class Test
;int x
; int y
} () public Test
; x=0
; y=0
{
{
-طيب لو ابغا اعطيهم قيم ماتكون صفر
اقدر اخلي الدالة تستقبل قيم
بحيث يصير كل أوبجكت أنشئه ارسل له قيم مختلفه
--بنفس طريقة الدوال العادية--
} class Test
;int x
; int y
} (int x2 , int y2) public Test
; x=x2
; y=y2
{
{
ملاحظة :
اقدر انشئ اكثر من كونستركتر في نفس الكلاس
بس تكون المتغيرات المرسله لها (Parameters) في كل دالة مختلفة
*مثال*
نشوف مثال :
لاحظوا هنا أنشئت 2 أوبجكت عشان نشوف الفرق
الأوبجكت الأول حيروح لأول كونستركتر .. ليه ?
لانو ماارسل قيم فحتصير الـx , y كلهم صفر
بس الأوبجكت الثاني أرسل قيم فحتصير
x=3 ,,, y = 5
وبكذا صار الأوبجكت حقنا قابل للإستخدام
} class Test
; int x
; int y
} () public Test
; x=0
; y=0
{
} public Test (int x2 , int y2)
;x=x2
;y=y2
{
{
} public class Main
} public static void main(String[] args)
; () Test obj1 = new Test
;Test obj2 = new Test(3,5)
;System.out.println("obj1 : "+obj1.x+" "+obj1.y)
;System.out.println("obj2 : "+obj2.x+" "+obj2.y)
{
{
وبكذا ننهي درسنا