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