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

تعليمات Java الأساسية

تحكم Java في العملية

مجموعات Java Array

Java موجه الأحداث (I)

Java موجه الأحداث (II)

Java موجه الأحداث (III)

معالجة الاستثناءات Java

قائمة Java (List)

Java Queue (الطابور)

مجموعات Java Map

مجموعات Java Set

Java إدخال/إخراج (I/O)

قراء/كتابة Java

مواضيع Java أخرى

الصفوف الثابتة المدمجة Java

في هذا الدرس، ستتعلم الفئات الداخلية الثابتة باستخدام الأمثلة. ستعرف أيضًا الفرق بين الفئة الثابتة والفئة الداخلية.

كما ذكرنا في الدرس السابق، يمكننا امتلاك فئة داخل فئة أخرى في Java. هذه الفئة تسمى الفئة الداخلية. في Java، هناك نوعان من الفئات الداخلية:

  • الفئة الداخلية غير الثابتة (الفئة الداخلية)

  • الفئة الداخلية الثابتة.

في الدرس السابق، ناقشنا الفئات الداخلية. إذا كنت ترغب في معرفة الفئات الداخلية، يرجى زيارةفئة Java الداخلية.

في هذا الدرس، سنتعلم الفئات الداخلية الثابتة.

فئة Java الداخلية الثابتة

نستخدم كلمة المفتاح static لجعل فئاتنا الداخلية ثابتة.

ملاحظة:في Java، يسمح فقط للفئات الداخلية بأن تكون ثابتة.

مثل الفئات العادية، يمكن للفئات الداخلية الثابتة أن تحتوي على حقول ثابتة وطرق ثابتة وغير ثابتة في نفس الوقت. على سبيل المثال،

فئة Animal {
   static class Mammal {
      // الأعضاء الثابتة والثابتة في فئة Mammal
   }
   // أعضاء فئة Animal
}

الفئة الداخلية الثابتة مرتبطة بالفئة الخارجية.

لا نحتاج إلى موضوع خارجي لزيارة الفئة الداخلية الثابتة.

مثال: المدمجة الثابتة

class Animal {
  // الفئة الداخلية
   class Reptile {
      public void displayInfo() {
        System.out.println("أنا حيوان زواحف.");
      }
   }
  // الفئة الثابتة
   static class Mammal {
      public void displayInfo() {
        System.out.println("أنا حيوان ثديي.");
      }
   }
}
class Main {
   public static void main(String[] args) {
      // إنشاء كائن من فئة خارجية
      Animal animal = new Animal();
      // إنشاء كائن من فئة غير المدمجة
      Animal.Reptile reptile = animal.new Reptile();
      reptile.displayInfo();
      // إنشاء كائن من فئة المدمجة الثابتة
      Animal.Mammal mammal = new Animal.Mammal();
      mammal.displayInfo();
   }
}

نتائج الإخراج

أنا حيوان زواحف.
أنا حيوان ثديي.

في البرنامج السابق، لدينا فئتين داخلتين Mammal و Reptile في فئة Animal.

لإنشاء كائن من فئة Reptile غير الثابتة، استخدمنا

Animal.Reptile reptile = animal.new Reptile();

لإنشاء كائن من فئة Mammal الثابتة، استخدمنا

Animal.Mammal mammal = new Animal.Mammal();

الوصول إلى أعضاء فئة خارجية

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

لنرى ما سيحدث إذا حاولنا الوصول إلى حقل أو طريقة غير ثابتة من فئة خارجية.

مثال: الوصول إلى العضو غير الثابت

class Animal {
  static class Mammal {
   public void displayInfo() {
     System.out.println("أنا حيوان ثديي.");
   }
 }
 class Reptile {
   public void displayInfo() {
     System.out.println("أنا حيوان زواحف.");
   }
 }
 public void eat() {
   System.out.println("أأكلُ الطعام.");
 }
}
class Main {
 public static void main(String[] args) {
   Animal animal = new Animal();
   Animal.Reptile reptile = animal.new Reptile();
   reptile.displayInfo();
   Animal.Mammal mammal = new Animal.Mammal();
   mammal.displayInfo();
   mammal.eat();
 }
}

نتائج الإخراج

Main.java:28: خطأ: لا يمكن العثور على الرمز
    mammal.eat();
          ^
  symbol: طريقة eat()
  location: متغير mammal من نوع Mammal
خطأ 1
حالة الخروج للمحول 1

في المثال السابق، قمنا بإنشاء طريقة غير ثابتة eat() في فئة Animal.

الآن، إذا حاولنا استخدام الكائن mammal لاستدعاء eat()، فإن محرر البرمجة سيظهر خطأ.
هذا لأن object mammal هو object من الفئة الثابتة، لذا لا يمكننا الوصول إلى الطريقة غير الثابتة من الفئة الثابتة.

الفئة العليا الثابتة

كما ذكرنا سابقًا، يمكن أن تكون فقط الفئات الداخلية ثابتة. لا يمكننا امتلاك فئة علوية ثابتة.

لنرى ما الذي سيحدث إذا حاولنا جعل الفئة العليا ثابتة.

class static Animal {
 public static void displayInfo() {
   System.out.println("I am an animal");
 }
}
class Main {
 public static void main(String[] args) {
   Animal.displayInfo();
 }
}

نتائج الإخراج

Main.java:1: خطأ: modifier static غير مسموح هنا
class static Animal {
       ^
خطأ 1
حالة الخروج للمحول 1

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