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

[تنبيه - عنوان غير مناسب : ]ارجو الاجابه علي هذا السؤال

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

السلام عليكم

ارجو منكم ان تفيدوني في هذه الاسئله.,.

لماذا تكتب كلمة thisاوsuper اول جملة الconstructor?

ماهي المشكله اذا كان الconstructor private?

وشكراا

#2

هذه الاسئله في لغة الجافا

ارجو المعذره...

#3
farida faisal كتب:

السلام عليكم

ارجو منكم ان تفيدوني في هذه الاسئله.,.

لماذا تكتب كلمة thisاوsuper اول جملة الconstructor?

ماهي المشكله اذا كان الconstructor private?

وشكراا

معذره اانا اول مره اشوف الموضوع دا

بالنسبه لكلمه this فهى تشير بوجهه عام الى الكلاس التى كتبت فيها

لو كان هناك متغير مثلا اسمه x وداله تدعى getX

ولو كتبت ذلك

this.x = 10;
this.getX();

فانت فى هذه الحاله تشير الى اعضاء الكلاس

انما this بمفردها فانك تشير الى الكلاس فقط

تستخدم ليه فالconstructor علشان لو القيمه التى فالconstructor نفس الاسم

للفصل بينهما

نشير الى عضو الكلاس بـ this. وبكدا نفرق بين المتغير القادم والمتغير الموجود لدينا

مثلا

public class TestClass{

int x ;

int y;

public TestClass(int x , int y){

this.x= x;

this.y = y;

}

}

بالنسبه للsuper

فهى تستخدم فالوراثه

فاذا كان لديك كلاس ترث من اخرى

فيمكنك باستخدام super من وضع قيم افتراضيه فالconstructor الخاص بالـ Parent class

اذا جعلت الـconstructor فى حاله private

ففى هذه الحاله لن تستطيع اخد object من هذه الكلاس

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

طب ازاى اعمل منها اوبجكت

شوف المثال التالى كنت شرحته لصديق واخ عزيز على :)

/**
 *
 * @author Mahmoud Kelany
 */
public class PrivateConstractor {

	private PrivateConstractor() {
	}

	public static PrivateConstractor getInstance() {
    	return new PrivateConstractor();
	}
	public void print(){
    	System.out.println("Private");
	}
}

كلاس التجربه

/**
 *
 * @author Mahmoud Kelany
 */
public class TestPrivateConstarcotr {
	public static void main(String[] args) {
    	PrivateConstractor pc = PrivateConstractor.getInstance();
    	pc.print();
	}
}

بالتوفيق :)

Software Developer
Mahmoudkelany.com


 

#4

مشكوووووووور

بس هل لازم تكون ال this في اول الجمله؟؟

#5
farida faisal كتب:

مشكوووووووور

بس هل لازم تكون ال this في اول الجمله؟؟

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

فعاوز تبعت ليها الكلاس دى بتقول this

انما فى باقى الحالات اكيد بتكون فالاول

على حسب اللى واجهنى كله فالاول

Software Developer
Mahmoudkelany.com


 

#6

مشكوور

#7

معلش يا محمود ما فائده ال private constructor بشكل اوضح ؟؟

انت قلت ان الكلاس لا يتم مناداته الا مره واحده ... فى حاله طبعا عدم وجود الداله getinstance

كمان ما فائده جعل هذه الداله من نوع privateconstructor .

ممكن تضع تعليقات بجانب كل سطر كوود لأن المثال جيد ما شاء الله ..

تم تعديل هذه المشاركة بواسطة The expendable في 19 نوفمبر 2010 في 17:47

no-pain-no-gain.jpg

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك

#8

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

وهذا نادرا ما يحدث

انا مش فاهم ايه اللى مش واضح

ممكن توضح ايه الغير واضح فالمثال؟

شوف اللينكات دى

http://www.javapractices.com/topic/TopicAction.do?Id=40

http://www.allinterview.com/showanswers/69059.html

Software Developer
Mahmoudkelany.com


 

#9

سلام

قد يستخدم ال Private Constructor في حالات تستجوب الحفاظ فقط على كائن واحد من صنف معين

مثلا:

لديك صنف بأسم MyNetworkMonitor و للحاجة توجب منع صنع اكثر من كائن من هذا الصنف

لذلك نقوم باستخدام ال Private Constructor كالتالي:

public class MyNetworkMonitor {

    private static MyNetworkMonitor myNetworkMonitor;

    private MyNetworkMonitor() {
    }

    public static void startMonitor() {
        if (myNetworkMonitor == null) {
            myNetworkMonitor = new MyNetworkMonitor();
        }
    }

    public static MyNetworkMonitor getInstance() {
        return myNetworkMonitor;
    }
}

و عند استدعاء هذا الكائن :

MyNetworkMonitor.startMonitor();
MyNetworkMonitor mnm = MyNetworkMonitor.getInstance();

اذا حاولت ان تصنع كائن جديد بواسطة الدالة new

سوف يظهر compile error

MyNetworkMonitor monitor=new MyNetworkMonitor();

اقتباس

MyNetworkMonitor() has private access in MyNetworkMonitor

تم تعديل هذه المشاركة بواسطة .S.T.A.L.K.E.R في 19 نوفمبر 2010 في 20:35

1
#10

اعتقد ان كدا كفايه اوووووووووووى laugh.giftongue.gif

فيه اسئله تانى فالـ Private Constructor

هو اللى انا عمال اقوله ليك من الصبح

اخونا محمد قاله ليك بردوا

باين عليك اكلت فالعيد كتير

Software Developer
Mahmoudkelany.com


 

#11

بجد بارك الله فيك اخى شرح وافى +1

اقتباس
هو اللى انا عمال اقوله ليك من الصبح

اخونا محمد قاله ليك بردوا

أخ محمود انا عايز اقولك ان انت شكلك اكلت اللحمه كلها وانتخت

no-pain-no-gain.jpg

اذا كنت لا تعلم الى اين تذهب... فكــل الطرق تؤدى الى هناك

#12

الأخ الكريم/الأخت الكريمة

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

مرحباً بكم في منتدى الفريق العربي للبرمجة

نود تنبيهك أن العنوان غير مناسب.

الرجاء اختيار عنوان مناسب أكثر في مواضيعك القادمة، وهذا بمثابة إشعار للأهمية.

وفي حال التكرار سيتعرض موضوعك للإغلاق والحذف!!!

قواعد المشاركة

/index.php?showtopic=29343

شاكرين لكم حُسن تعاونكم

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

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

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

728x90.png

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…