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

ما هي فائدة الكونستراكتر(constructor) في الجافا ؟

بدأه الجنـtigerـرال في 1 أبريل 2010 · 18 رد · 12,454 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

ما هي فائدة الكونستراكتر ؟

أتمنى الإجابة ضروري

#2

ال constructor ليس متعلق بالجافا لكنه متعلق بالبرمجة الكائنية oriented object بصفة عامة

هذا موضوع يتكلم عن البرمجة الكائنية بالجافا /index.php?showtopic=49569

باختصار، ال constructor يحتوي على الكود الذي يتم تنفيذه في كل مرة يتم بناء كائن جديد بواسطة new

1
#3

السلام عليكم

ما هو ال constructor((اخاف من الاخ علاء)::

بكون بنفس اسم ال class

هو عبارة عن دالة خاصة special method ليس له return type و لا تقع فى الخطأ المعتاد و نقول يعنى void لالا و لا void,int,double و لا اى حاجة من دى

ماذا يفعل::::

نقوم بوضع قيم للمتغيرات الخاصة بالفئة او class بداخلة >>>>> initialization

و ان لم تقوم بعمل constructor داخل الفئة الخاصة بك

سيقوم البرنامج بعمل default construcor تلقائيا و لكنه فى هذة الحالة سيكون فارغ لا يحتوى على اى متغيرات

اردت الافادة و لو فيه اى خطأ بكلامى ارجو التعليق من الاخوة الاعضاء

بالتوفيق

تم تعديل هذه المشاركة بواسطة اسراء شلبى في 2 أبريل 2010 في 18:24

1
00020309t.gif

1958_1963.gif
#4
اقتباس
سيقوم البرنامج بعمل default construcor تلقائيا

أتوقع أن هذا موجود فقط في Java، أما في ++C فلا أظن أنها تنشئ Constructor افتراضي. بالنسبة ل #C ليس لدي فكرة.

#5

اعتقد ان كلامك صح اخى الكريم

كما يوجد ايضا فى c++ يوجد deconstructor حيث يقوم بمسح جميع القيم التى بداخل المتغيرات و لا يوجد فى الجافا

00020309t.gif

1958_1963.gif
#6

أظن أنا كلا من الجافا و السي شارب لديهما نفس الخاصيه,,, "Default Constructor"

http://msdn.microsoft.com/en-us/library/aa645603.aspx

1
#7

بالنسبة للأخ كاتب الموضوع يكفي أن تقول constructor حتى نفهم

أتمنى أن لا تكتب الكلمة باللغة العربية

احم احم

بدأت آخذ طابع الأخ رفعت إسماعيل وبقوة :lol:

تحياتي

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

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

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

728x90.png

#8
اقتباس
كما يوجد ايضا فى c++ يوجد deconstructor حيث يقوم بمسح جميع القيم التى بداخل المتغيرات و لا يوجد فى الجافا

بل اسمه Destructor !

ولا يقوم بمسح القيم التي بداخل المتغيرات، بل نقوم نحن بكتابة كود إفراغ الذاكرة من المتغيرات

وفي جافا يقوم الـ Garbage Collector بهذه المهمة

1
#9

للعلم فقط

يكون شكل ال default construcor في الجافا

public ClassName(){
super();
}

تم تعديل هذه المشاركة بواسطة Mohammed Mshari Ersan في 3 أبريل 2010 في 00:19

#10

ما فائدة هذا السطر

super();

شكرا لك اخSpeed_Of_Light تعاملى مع c++ خفيف...!!

00020309t.gif

1958_1963.gif
#11

super() تقوم بالمناداة على ال constructor الخاص بال class الأم

#12

كيف ؟؟ و انا اصلا لم اقم بعمل constructor ??

و البرنامج يقوم تلقائيا بعمل constructor يعنى لم يوجد شىء بناديه؟

00020309t.gif

1958_1963.gif
#13
اقتباس
super() تقوم بالمناداة على ال constructor الخاص بال class الأم

الـ Class الأم أم الأب :)

#14

أعتقد أن هناك مشكلة في هذه الجملة أخ Speed_Of_Light

اقتباس

ولا يقوم بمسح القيم التي بداخل المتغيرات، بل نقوم نحن بكتابة كود إفراغ الذاكرة من المتغيرات

وفي جافا يقوم الـ Garbage Collector بهذه المهمة

لأنه وعلى حسب علمي يوجد garbage collector في c++

تحياتي

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

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

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

728x90.png

#15

طيب معلومة اضافية

حتى وان قمت بتعريف الConstructor الخاص بصفك مثل :

public ClassName(){
x=10;
y=50;
}

فأن الشكل الذي سيتكون بعد الcompile من قٍٍبل ال jvm

فيسكون شكله كالتالي:

public ClassName(){
super();
x=10;
y=50;
}

حيث بالفعل يتم استدعاء ال constructor الخاص بالصف الام super class في اول استدعاء للconstructor الخاص بصفك

#16
اقتباس
...استدعاء ال constructor الخاص بالصف الام super class في...
، غريب...، أنا أسمي الصف الأعلى بـ الصف الأب :happy:
#17

اممممم

انا كدة فهمت

شكرااااا

00020309t.gif

1958_1963.gif
#18

يبدو أن هناك أحداً متنبهاً هنا :D

شكراً على الملاحظة

سأقتبس من العمة wikipedia :

اقتباس
Some languages, like Ada, Modula-3, and C++/CLI allow both garbage collection and manual memory management to co-exist in the same application by using separate heaps for collected and manually managed objects

الترجمة:

بعض اللغات مثل Ada، Modula-3 و C++/CLI تسمح بوجود إدارة يدوية للذاكرة وجمع النفايات "garbage collection" معاً في نفس التطبيق باستخدام heaps منفصلة للأغراض المدارة يدوياً وتلك المدارة بجامع النفايات Garbage Collector

المصدر: http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)

إذاً هناك عدة نقاط:

- أولاً لاحظ أن لغة C++/CLI تمكن من كتابة كود مُدار وغير مدار managed & unmanaged code

- ثانياً هذا لا ينطبق على كل تحقيقات implementations اللغة، ويمكن القول بشكل عام أنه لا يوجد دعم مدمج لجمع النفايات في C++

- ثالثاً (وأهم نقطة) أن الكلام كان على الـ deconstructor وهو الذي يتم تنفيذه لإنهاء دورة حياة الغرض واستخدامه ينحصر في ذلك

#19

تخيل يا اخي انك ذهبت ل شراء تليفزيون وعندما سالك البائع عن نوع التليفزيون اجبته بانك تريد تليفزيون غير محدد نوعه وعندما سالك عن مقاسه اجبته بانه لا يهم الان مقاسه وعندما سالك عن لونه وعدد القنوات ونوع التكنولوجيا اجبته انك تريد تليفزيون كل خواصه مبهمة وغير محددة . هل يستطيع البائع ان ياتي لك بمثل هذا التليفزيون ؟؟؟ تليفزيون بدون ماركة او مقاس او لون وغير معلومة عدد قنواته ولا نوع التكنولوجيا المستخدمة في صناعته وغير معلوم ايا من خواصه ؟؟ هل يستطيع ان ياتي لك بالعدم ؟؟؟ بنفس المنطق باعتبار هذا التليفزيون كائن (Object) يجب عند احضاره ان نحدد الشكل الذي يكون عليه التليفزيون والا سيكون غير ممكنا الحصول عليه . وهذه فائدة دالة البناء (Constructor ) فهي التي ستحدد الشكل الذي سيكون عليه الكائن (Object )عند بنائه ولذلك فيجب استدعائها عند بتاء الكائن (Object ) ونظرا لحساسيتها واهميتها كما راينا فقد تم تمييزها باعطائها نفس اسم (Class) مع وضع قيد انه يجب استدعائها اثناء بناء ال كائن (Object ) .

تم تعديل هذه المشاركة بواسطة a_abdalnby في 3 أبريل 2010 في 23:50

1

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