b523db2bbea7098aeccea0f78f41f223
     
     
     
    
    
    
    
    
    
    
 
تقنية و أشياء أخرى
تقنية و أشياء أخرى
مختلف المقالات و النقاشات و الروابط المتعلقة بالتقنية او المواضيع العامة
الفرق بين final و final static للمتغيرات في الجافا
                         عربي     English

الفرق بين final و final static للمتغيرات في الجافا

   محمد جمال الذياب        08-02-2020  
   alm_m   
السلام عليكم
مالفرق بينهما
قرأت ان الfinal للمتغيرات الغير قابله للتعديل
لكن عند اسدعائها مع الobject تبين لي انه من الممكن تعديلها
ام final static
فلم اتمكن من تعديلها
التعليقات
   eng.fouad - فؤاد المالكي   
المتغير المعرف بـ final، لا يمكن إعطاءه قيمة جديدة من بعد أن ما تم إعطائه قيمة أولية. بمعنى آخر، لو لدينا متغير نصي من نوع local variable (أي داخل دالة) وقمنا بتعريفه كـ final:
 
final String a;


فإنه لا يقبل إسناد قيمة له إلا مرة واحدة:
 
final String a;
a = "test";
a = "test2"; // ERROR


أو
 
final String a = "test";
a = "test2"; // ERROR


يمكن أيضاً تعريف الـ parameter كـ final، ويعني بأن قيمته ستكون ثابتة داخل الدالة:
 
public void foo(final int param(
{
param = 6; // ERROR
param++; // ERROR
}


يمكن أيضاً تعريف instance variable كـ final، ويجب إسناد قيمة أولية له إما بشكلٍ مباشر أو من خلال الـ constructor أو بداخل instance initializer:
 
public class Test
{
private final ClassA a = new ClassA();
private final ClassB b;
private final ClassC c;
public Test()
{
b = new ClassB();
}
{
c = new ClassC();
}
}


يمكن أيضاً تعريف static variable كـ final، ويجب إسناد قيمة أولية له إما بشكلٍ مباشر أو من خلال الـ static initializer:
 
public class Test
{
private static final ClassA a = new ClassA();
private static final ClassB b;
static
{
b = new ClassB();
}
}


يرجى ملاحظة أنه في حالة الكائنات ما زال بإمكانك التعديل على نفس الكائن، ولكن لا يمكن تغير الكائن الذي يشير إليه المتغير:
 
final ClassA a = new ClassA();
a.setX(123);
a = new ClassA(); // ERROR


يستخدم final أيضاً على مستوى الكلاس ويعني أن الكلاس لا يمكن الوراثة منه. يستخدم final أيضاً على مستوى الدالة ويعني بأن الدالة لا يمكن عمل Override لها.

بالنسبة لـ static، فكما ذكر الأخ WGH، تعني بأن المتغير مشترك بين جميع العينات بعكس الـ instance variable والذي يعني أن كل كائن له نسخة خاصة من ذلك المتغير.
   eng.fouad - فؤاد المالكي   
الثوابت تجدها دائماً static و final، وذلك يعني بأن قيمتها ثابتة، وأنها مشتركة بين جميع العينات من نفس الكلاس بدلاً من إنشاء نسخة جديدة من المتغير مع إنشاء كل كائن جديد.
   alm_m   
شكرا على التوضيح
بارك الله فيكم
   wgh - Ward GHB   
final للثوابت, التي لا يتم تعديلها بعد اول مرة يتم فيها اعطائها قيمتها.
Static تعني ان المتغير يرتبط بل Class وليس ال Object, يعني عندما تعرف متغير كـ Static, فيكون هذا المتغير مشترك بين جميع ال Object التي تم عملها عن طريق هذه الكلاس.
وتستطيع استدعاء ال Static من خلال اسم الكلاس : Abc.X
   alm_m   
مالمقصود ب "final للثوابت, التي لا يتم تعديلها بعد اول مرة يتم فيها اعطائها قيمتها."
وشكرا لك
   wgh - Ward GHB   
حسناً, جميعنا نعلم ان درجة غليان الماء = تقريباً 100 درجة, ونعلم ايضاً كمبرمجين ان هذه القيمة ثابتة, ولا داعي ان تتغير في البرنامج ابداً,
لذلك نستعمل final int waterBoile = 100;
حسناً, لو حاولنا خلال الكود ان نقوم بتغيير هذه القيمة, مثلاً waterBoile = 80;
سيظهر لنا Error يفيد بأن هذه القيمة لا يمكن تعديلها لانها final.
حسناً لنفرض اننا عرفنا المتغير هكذا, final int waterBoile; بدون ان نسند له قيمة.
لو حاولنا خلال الكود ان نقول waterBoile = 80; سيتم تنفيذ الكود بدون اي خطأ, الان نحن اعطيناها قيمة اول مرة,
لكن لو حاولنا بعد ذلك ان نعدل هذا المتغير ليصبح waterBoile = 50; سيظهر لنا Error
   alm_m   
اهاااااا شكرا لك اخي WGH
   dr.elpop   
تمام
  الموضوع و التعليقات و باقي البيانات في هذه الصفحة منقولة و معدلة من المصدر على الرابط التالي : https://io.hsoub.com/java/4131
  هذا الموضوع مرخص تحت : رخصة المشاع الإبداعي BY-SA
المشاركة :
تويتر
فيسبوك
الإيميل
لينكد إن
واتساب
الرابط

هل تدون مذكراتك؟؟؟ هل تدون مذكراتك؟؟؟
انشاء روابط نظيفة clean URL باسلوب جميل | php Tricks انشاء روابط نظيفة clean URL باسلوب جميل | php Tricks
أهمية استخدام السواك (المسواك) و الفوائد الصحية الناتجة عنه - كبسولة أهمية استخدام السواك (المسواك) و الفوائد الصحية الناتجة عنه - كبسولة
غداً إن شاء الله سوف أتوجه إلى جمهورية جورجيا ،، غداً إن شاء الله سوف أتوجه إلى جمهورية جورجيا ،،
استفتاء: ماهي الأشياء التي تهمك في مدونتك الشخصية استفتاء: ماهي الأشياء التي تهمك في مدونتك الشخصية
ما هو حل مشكلة \"الملل من البرمجة\" ما هو حل مشكلة \"الملل من البرمجة\"
اريد تعلم البرمجة هل يمكن مساعدة من مبرمجين محترفين او مبتدئين اريد تعلم البرمجة هل يمكن مساعدة من مبرمجين محترفين او مبتدئين

gg gg
مراجعات - تقييمات - فديوها - مقالات و مختلف المواضيع التي تهم اللاعبين العرب
http://gg.leomara.com/
الروابط المختصرة    سياسة الخصوصية    شروط الإستخدام    من أنا    من نحن    الأسئلة الشائعة    موضوع عشوائي    اتصل بنا   
                           
Developed by : MJ7.org