Java مثال عملي يوضح فائدة الكلمة final في جافا

في المثال التالي قمنا إنشاء كلاس إسمه Student لتخزين بيانات الطلاب مع مراعاة الشروط التالية:
كل طالب يجب ذكر إسمه name, إختصاصه Specialization, بالإضافة أنه يجب إعطاء كل طالب رقم تسلسلي id لا يمكن تغييره و تخزين عدد جميع الطلاب studentsCounter.
لحفظ عدد الطلاب, يمكننا تعريف المتغير studentsCounter كـ private و static يزيد واحداً كلما قمنا بإنشاء كائن جديد ( أي طالب جديد, لأن كل طالب عبارة عن كائن من الكلاس Student ).
و بالنسبة لرقم الـ id الذي يجب توليده بشكل تسلسلي لكل طالب جديد, فيمكننا تعريف متغير نوعه final و جعله يزيد واحداً بشكل تسلسلي لكل طالب جديد.

بعد إنشاء هذا الكلاس, سنقوم بإنشاء الكلاس MainStudent لتجربته.

Student.java
public class Student {
                                          // هنا قمنا بتعريف الخصائص التي يجب أن تتوفر في كل طالب
    public String name;                   // سنستخدم هذا المتغير لحفظ إسم الطالب
    public String specialisation;         // سنستخدم هذا المتغير لحفظ إسم تخصص الطالب
 
    public final int id;                  // سنستخدم هذا المتغير لحفظ الرقم التسلسلي للطالب و الذي يمكن الوصول إليه من خلال أي كائن مع عدم القدرة على تبديل قيمته
    private static int studentsCounter;   // private سنستخدم هذا المتغير لحفظ عدد الطلاب, لا يمكن لأحد من خارج هذا الكلاس تغيير عدد الطلاب لأنه
 
    // عند إنشاء كائنات من هذا الكلاس سنستخدم هذا الكونستركتور لإدخال معلومات الطلاب مباشرةً عند تعريفهم
    public Student(String name, String specialisation) {
        this.name = name;
        this.specialisation = specialisation;
 
        studentsCounter++;                // سيكون موحد لجميع الكائنات. هنا كلما قمنا بإنشاء كائن جديد سيزيد واحداً و هكذا سنحصل على عدد جميع الطلاب التي أنشأت static بما أن نوعه
        id = studentsCounter;             // هنا كلما أضيف طالب جديد سيأخذ عدد الطلاب الحالي كرقم تسلسلي, و هكذا سيملك كل طالب رقم تسلسلي مختلف لا يمكن تغييره
    }
 
    // هذه الدالة تطبع محتوى الكائن (أي بيانات الطالب) الذي قام باستدعائها
    public void printStudentInfo() {
        System.out.println("Student: " +name);
        System.out.println("ID: " +id);
        System.out.println("Specialization: " +specialisation);
        System.out.println("------------------------------");
    }
 
    // static هذه الدالة تطبع عدد الكائنات (أي الطلاب) و يمكن استدعائها مباشرةً من الكلاس لأن نوعها
    public static void printTotalNumberOfStudents() {
        System.out.println("The Total number of Students is: " +studentsCounter);
    }
 
}
		

Main.java
public class Main {
 
    public static void main(String[] args) {
 
        // هنا قمنا بإنشاء خمس طلاب
        Student s1 = new Student("Mhamad", "Computer Science");
        Student s2 = new Student("Hala"  , "Computer Science");
        Student s3 = new Student("Marwan", "IT");
        Student s4 = new Student("Ahmad" , "Civil Engineer");
        Student s5 = new Student("Salam" , "Telecom");
 
        // هنا قمنا بعرض خصائص كل طالب
        s1.printStudentInfo();
        s2.printStudentInfo();
        s3.printStudentInfo();
        s4.printStudentInfo();
        s5.printStudentInfo();
 
        // هنا قمنا بعرض عدد جميع الطلاب
        Student.printTotalNumberOfStudents();
 
    }
 
}
		

سنحصل على النتيجة التالية عند التشغيل.

Student: Mhamad
ID: 1
Specialization: Computer Science
------------------------------
Student: Hala
ID: 2
Specialization: Computer Science
------------------------------
Student: Marwan
ID: 3
Specialization: IT
------------------------------
Student: Ahmad
ID: 4
Specialization: Civil Engineer
------------------------------
Student: Salam
ID: 5
Specialization: Telecom
------------------------------
The Total number of Students is: 5 
		

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة