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