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

أي الطريقتين أفضل في تهيئة خصائص الصف

بدأه Speed_Of_Light في 25 فبراير 2010 · 7 رد · 512 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سؤال بسيط جداً !

أي الطريقتين أفضل في تهيئة خصائص الصف، ولماذا ؟

public class WhatIsTheDifference {

    String dataMember;

    public WhatIsTheDifference() {
        dataMember = new String("Data member initialized");
        // coooooooooooode goes here
    }
}

public class WhatIsTheDifference {

    String dataMember = new String("Data member initialized");;

    public WhatIsTheDifference() {
        // coooooooooooode goes here
    }
}
#2

لا أظن أن هناك فرقا، إلا ربما في ترتيب التنفيذ. ربما ال initialization التي تتم خارج ال constructor هي التي تنفذ أولا.

#3

يتم تنفيذ التهيئة initialization داخل الباني constructor فور إنشاء غرض من هذه الفئة/الصنف

إذاً فمتى يتم تنفيذ التهيئة خارج الـ constructor !

بالرغم من عدم وجود فرق "ملموس" بين الطريقتين، لكن لاحظت أن كل الـ IDEs وكثير من المبرمجين يستخدمون الطريقة الأولى، بينما أفضّل الطريقة الثانية لأنها أكثر ترتيباً وعزلاً عن للكود ...

هل هناك فرق حقاً ؟!

تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 25 فبراير 2010 في 14:37

#4

أعتقد أن هذا يتوقف على القيمه الإفتراضيه للكائن الفارغ من هذه الفئه !

#5
اقتباس

أعتقد أن هذا يتوقف على القيمه الإفتراضيه للكائن الفارغ من هذه الفئة

ماذا تقصد أخ هويدي ؟

عند التصريح declare عن غرض من صف لا يتم حجز مساحة له بالذاكرة إلى أن يتم الإنشاء الفعلي للغرض ... بالتالي لا يوجد قيمته افتراضية null

تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 25 فبراير 2010 في 18:43

#6

ما أعرفه هو أنك تستخدم كل طريقة حسب برنامجك وما يحتاج ،

اذا كنت تتعامل مع متغير عادي ( ليس static ) ، فلك الخيار ، اما في الباني ( Constructor ) ، أو تسند له قيمة وقت الاعلان عن المتغير ، طبعاً القيمة التي ستكتبها في Constructor ستلغي القيمة السابقة المسندة وقت الاعلان عن المتغير ( كما قال الاخ herch ) .

اذا كنت تتعامل مع static members ، ففي الغالب ستضطر لاسناد قيمة وقت الاعلان عن المتغير ، لأنه وفي الغالب ، عندما تستدعي static member ، فإنك تستدعيه دون انشاء كائن ، يعني لن تستدعي الباني Constructor .

فالخلاصة أنه في حالة المتغيرات العادية ، تضع القيم في Constructor .

وفي حال المتغيرات الستاتيكية ، تسند القيم وقت الاعلان عن المتغير .

هذا ما أعرفه .

مثال :

public class TestClass {
	public int x = 1;
	public static int z = 2;
	TestClass()
	{
 	x = 10;
 	z = 20;
	}

	public static void printZ()
	{
 	System.out.println("z: "+z);

	}
	public static void main(String arg[])
	{
 	TestClass.printZ(); // 2
 	TestClass myClass = new TestClass();
 	myClass.printZ(); // 20

 	System.out.println("x : " + myClass.x); // 10

	}

}

تم تعديل هذه المشاركة بواسطة الشمري في 26 فبراير 2010 في 03:31

1

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#7

+1 الشمري,

إضافة إلى ذلك, يوجد في Java ما يسمى الـ static constructor,

public class TestClass {
        public int x = 1;
        public static int z;

		static
		{ z = 2; }
        TestClass()
        {
        x = 10;
        z = 20;
        }

        public static void printZ()
        {
        System.out.println("z: "+z);

        }
        public static void main(String arg[])
        {
        TestClass.printZ(); // 2
        TestClass myClass = new TestClass();
        myClass.printZ(); // 20

        System.out.println("x : " + myClass.x); // 10

        }

}

بالنهاية, الأمر راجع للمبرمج كما تفضل الأخوة, هذا يعتمد إذا كان بإمكانك كتابة oneliner لتهيئة المتغير أم لا :D

#8

شكراً لكم جميعاً ... وضحت الصورة

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

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

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

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

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