English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ماذا يحدث عند إعلان الطريقة/المحuctor final في Java؟

بمجرد تحديد الطريقة كنهائية، لا يمكناستبدال ذلك. أي أنك لا يمكنك تقديم تنفيذ للطريقة النهائية من الفئة الفرعية.

بمعنى آخر، إن الهدف من جعل الطريقة نهائية هو منع تعديلها من الخارج (الفئة الفرعية).

لكن، إذا حاولت تغيير طريقة النهائية، ستظهر خطأ في وقت التجميع.

مثال

interface Person{
   void dsplay();
}
class Employee implements Person{
   public final void dsplay() {
      System.out.println("هذا هو طريقة عرض فئة Employee");
   }
}
class Lecturer extends Employee{
   public void dsplay() {
      System.out.println("هذا هو طريقة عرض الفئة المدرس");
   }
}
public class FinalExample {}}
   public static void main(String args[]) {
      Lecturer obj = new Lecturer();
      obj.dsplay();
   }
}

نتيجة الإخراج

Employee.java:10: خطأ: dsplay() في Lecturer لا يمكن الاستبدال dsplay() في Employee
public void dsplay() {
            ^
method مستدل نهائي
1 خطأ

استخدام بناء نهائي

في التوريث، إذا كنت توسع الفئة. تنشئ الفئة الفرعية جميع أعضاء الفئة الأصلية باستثناء البناء.

بمعنى آخر، لا يمكن للبناء التوريث في Java، لذلك لا يمكنكاستبدالبناء

لذلك، ليس لهذا أي معنى في كتابة final قبل البناء. لذلك، لا يسمح Java باستخدام كلمة المفتاح final قبل البناء.

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

مثال

في البرنامج Java التالي، يحتوي فئة Student على بناء نهائي.

public class Student {
   public final String name;
   public final int age;
   public final Student()
      this.name = "Raju";
      this.age = 20;
   }
   public void display() {
      System.out.println("اسم الطالب: " + this.name);
      System.out.println("عمر الطالب: " + this.age);
   }
   public static void main(String args[]) {
      new Student().display();
   }
}

خطأ في التجميع

في وقت التجميع، البرنامج المذكور أعلاه يولد الخطأ التالي.

Student.java:6: خطأ: modifier final غير مسموح هنا
   public final Student()
               ^
1 خطأ