"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > سحر ``الثابت`` في Java: واحد للجميع، والجميع للواحد!

سحر ``الثابت`` في Java: واحد للجميع، والجميع للواحد!

تم النشر بتاريخ 2024-11-06
تصفح:888

The Magic of `static` in Java: One for All, and All for One!

لنكن صادقين - عندما نواجه الكلمة الأساسية الثابتة لأول مرة، نفكر جميعًا: "ما نوع هذا السحر؟" ؟ ولكن لا تقلق، فأنا هنا لشرح الأمر بطريقة بسيطة وعميقة وربما ممتعة بعض الشيء!

تخيل أنك في حفلة؟. أنت وجميع أصدقائك يرتدون القبعات. ولكن هناك فقط قبعة واحدة يجب على الجميع مشاركتها. هذا هو ما تفعله الكلمة الأساسية الثابتة في Java! بدلاً من إنشاء قبعة لكل صديق (الأمر الذي يمكن أن يصبح فوضويًا)، لديك قبعة واحدة تنتمي إلى المجموعة — الفئة الفئة — ويمكنكم جميعًا أن تتناوبوا على ارتدائها.

الآن بعد أن وضعنا هذه الصورة في الاعتبار، فلنتعمق في ما تفعله البيانات الثابتة في Java.


ماذا يعني ثابت؟

بعبارات بسيطة، عندما تستخدم الكلمة الأساسية الثابتة في Java، فإنك تقول، "مرحبًا، هذا الشيء هنا ينتمي إلى الفئة نفسها، وليس إلى أي كائن محدد من تلك الفئة."

هذا يعنى:

  1. لا حاجة للكائنات: ليس عليك إنشاء كائن لاستخدام متغير أو طريقة ثابتة. فقط اتصل به مباشرة!
  2. مشتركة عبر كافة الكائنات: إذا قمت بإنشاء كائنات، فستشترك جميعها في نفس العناصر الثابتة. تغيير واحد يؤثر على الجميع. إنها مثل قبعة الحفلات العالمية؟!

المتغيرات الثابتة: قبعة الحفلة؟

المتغير الثابت يشبه تلك القبعة التي يتقاسمها الجميع. إذا قمت بتغيير القبعة (على سبيل المثال، ألصقت ريشة فيها)، سيرى الجميع التغيير.

مثال:

class Party {
    static int numberOfGuests = 0; // static variable

    Party() {
        numberOfGuests  ;  // Increment the guest count every time someone joins the party
    }
}

public class Main {
    public static void main(String[] args) {
        Party guest1 = new Party();
        Party guest2 = new Party();
        Party guest3 = new Party();

        System.out.println(Party.numberOfGuests);  // Output: 3 ?
    }
}

في المثال، يتشارك كافة الضيوف في المتغير numberOfGuests. لا يحصل كل ضيف جديد على عدد ضيوفه (تخيل الفوضى!). بدلاً من ذلك، يقوم الجميع بتحديث نفس العدد. الآن، بغض النظر عن عدد الضيوف الذين يصلون، هناك عدد واحد فقط من الضيوف، وينتمي إلى فئة الحفلة، وليس لأي ضيف فردي.


الأساليب الثابتة: رجل توصيل البيتزا؟

الطرق الثابتة تشبه رجال توصيل البيتزا في الحفلة - يمكنك الاتصال بهم وسيظهرون دون الحاجة إلى دعوة (كائن). بغض النظر عن عدد الحفلات التي تقيمها، نفس عامل البيتزا هو الذي يوصل البيتزا للجميع؟. ما عليك سوى الاتصال بمطعم البيتزا (الفصل)، وسيصلون!

مثال:

class PizzaShop {
    static void deliverPizza() {
        System.out.println("Pizza delivered! ?");
    }
}

public class Main {
    public static void main(String[] args) {
        PizzaShop.deliverPizza();  // No need to create a PizzaShop object
    }
}

في المثال أعلاه، لم يكن عليك إنشاء كائن PizzaShop للحصول على البيتزا. لقد قمت باستدعاء الطريقة مباشرة من الفصل. لماذا تريد إنشاء متجر في كل مرة تشعر فيها بالجوع؟


الكتل الثابتة: فحص صوت DJ؟

قبل بدء الحفلة، يقوم منسق الموسيقى بفحص الصوت، أليس كذلك؟ هذا يشبه إلى حد ما كتلة ثابتة. يتم تشغيله مرة واحدة، قبل حدوث أي شيء آخر، للتأكد من أن كل شيء في مكانه.

مثال:

class Party {
    static String music;

    // Static block to set up the DJ's playlist ?
    static {
        music = "Let's Dance by David Bowie";
        System.out.println("Music is set up: "   music);
    }
}

public class Main {
    public static void main(String[] args) {
        System.out.println("Party is starting with: "   Party.music);
    }
}

يتم تنفيذ الكتلة الثابتة قبل بدء أي حفلة. يتم إعداد الموسيقى مسبقًا، لذا عندما يصل الضيوف، يكونون في حالة من البهجة بالفعل؟.


الفئات المتداخلة الثابتة: منطقة كبار الشخصيات؟

الفئات المتداخلة الثابتة تشبه قسم VIP في الحفلة. إنهم داخل الحدث الرئيسي، لكنهم مستقلون، ولا تحتاج إلى إنشاء مجموعة للوصول إلى قسم VIP.

مثال:

class Party {
    static class VIPArea {
        void exclusiveService() {
            System.out.println("Welcome to the VIP area! ?");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Party.VIPArea vip = new Party.VIPArea();  // No need for a Party object
        vip.exclusiveService();  // Output: Welcome to the VIP area! ?
    }
}

على الرغم من أن منطقة VIP هي جزء من الحفلة، فإنك لا تحتاج إلى حفلة كاملة لاستخدامها. إنها تقف بمفردها، وكأنها صالة رائعة وهادئة لكبار الشخصيات داخل حدث هائج.


لماذا نستخدم الثبات؟

الآن، ربما تفكر، "هذا رائع، ولكن متى يجب أن أستخدم البيانات الثابتة؟" حسنًا، إليك ورقة الغش:

  1. للثوابت: الأشياء التي لا تتغير أبدًا (مثل Pi). استخدم ثابت نهائي للثوابت، على سبيل المثال، ثابت نهائي مزدوج PI = 3.14159؛
  2. للطرق المساعدة: الوظائف التي لا تعتمد على أي حالة كائن. فكر في Math.pow().
  3. بالنسبة للبيانات المشتركة: عندما يجب على جميع مثيلات الفصل مشاركة قيمة، مثل حساب عدد مرات إنشاء شيء ما.
  4. من أجل الكفاءة: تجنب إنشاء كائن عندما لا تحتاج إليه. ما عليك سوى استخدام طريقة ثابتة أو متغير بدلاً من ذلك!

خلف الكواليس: كيف يعمل الوضع الثابت؟ ⁉️

حسنًا، حان وقت إلقاء نظرة خاطفة خلف الستار. وإليك كيف يحدث السحر:

  1. إدارة الذاكرة : توجد المتغيرات والأساليب الثابتة في منطقة الطريقة من الذاكرة (وليس في الكومة التي تعيش فيها الكائنات). وهذا يعني أنها يتم تحميلها مرة واحدة عند تحميل الفصل لأول مرة، وتظل هناك حتى ينتهي البرنامج.
  2. التهيئة: تتم تهيئة المتغيرات والكتل الثابتة عندما يتم تحميل الفئة في الذاكرة (وليس عند إنشاء الكائنات). لذا، فهي جاهزة للاستخدام قبل تصنيع أي شيء.
  3. الوصول: لا تحتاج إلى كائن للوصول إلى المتغيرات أو الأساليب الثابتة لأنها تنتمي إلى الفئة، وليس إلى أي كائن محدد.

يشبه إعداد طاولة للوجبات الخفيفة قبل وصول الضيوف. ليس عليك أن تطلب من كل ضيف إحضار طعامه الخاص - فهم فقط يساعدون أنفسهم في تناول الوجبات الخفيفة المشتركة؟.


تنبيه: لا تبالغ! ?

مثل معظم الأشياء، يمكن أن يكون الكثير من الكهرباء الساكنة أمرًا سيئًا. إليك بعض التحذيرات:

  • لا يوجد كائن، لا يمكن الوصول إلى العناصر غير الثابتة: لا يمكن للطرق الثابتة الوصول إلى المتغيرات أو الأساليب غير الثابتة (المثيل) لأنها تنتمي إلى الفئة، وليس إلى كائن. بمعنى آخر، لا يستطيع عامل البيتزا مساعدتك في اختيار قائمة تشغيل، فهو يتعامل فقط مع البيتزا؟.
  • سلامة الموضوع: إذا قامت عدة سلاسل رسائل بتعديل نفس المتغير الثابت، فقد تصبح الأمور فوضوية (ما لم تتعامل مع المزامنة). تخيل أن ضيفين يتقاتلان على نفس القبعة، وتحدث الفوضى! ?

الاختتام: ثابت باختصار

الكلمة الأساسية الثابتة في Java تشبه DJ ورجل البيتزا وصالة VIP في إحدى الحفلات - فهي تجعل كل شيء أكثر سلاسة وكفاءة ومشتركًا بين جميع الضيوف. سواء كنت تتعامل مع طرق فائدة، أو بيانات مشتركة، أو تريد فقط حفظ الذاكرة، فالثبات هو صديقك.

لكن تذكر، لا تحول كل شيء إلى شيء ثابت مجاني للجميع! استخدمه بحكمة، وسيكون كودك نظيفًا وفعالًا وخاليًا من الفوضى؟.


هذا كل شيء! أنت الآن جاهز للتخلص من بعض المعرفة الثابتة مثل المحترفين؟.


بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/akshay_gengaje/the-magic-of-static-in-java-se-for-lall-all-for-s-1j0o؟1 إذا كان هناك أي انتهاك ، يرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3