Document Details

DynamicNash3049

Uploaded by DynamicNash3049

Al-Wataniya Private University

Tags

java programming interfaces object-oriented programming computer science

Summary

This document provides a comprehensive overview of interfaces in Java programming. It explains the concept, its purpose, and its use in achieving polymorphism and multiple inheritance within the context of object-oriented programming. It includes examples demonstrating the practical implementation of interfaces and their interactions with classes.

Full Transcript

# الواجهة في جافا Interface in Java - هي مخطط لصف - تحتوي على ثوابت ساكنة static constants وطرق مجردة abstract methods - تستخدم لتحقيق التجريد والوراثة المتعددة في Java - تمثل واجهة Java غالباً علاقة IS-A. ### استخدام الواجهات لـ: - لتحقيق التجريد - دعم الوراثة المتعددة من خلال الواجهة -...

# الواجهة في جافا Interface in Java - هي مخطط لصف - تحتوي على ثوابت ساكنة static constants وطرق مجردة abstract methods - تستخدم لتحقيق التجريد والوراثة المتعددة في Java - تمثل واجهة Java غالباً علاقة IS-A. ### استخدام الواجهات لـ: - لتحقيق التجريد - دعم الوراثة المتعددة من خلال الواجهة - لتحقيق وراثة بشكل أعم ### لإنشاء واجهة Interface: - نستخدم الكلمة المحجوزة interface وبعدها اسم الواجهة - جميع الطرائق المعرفة في الواجهة تكون مجردة (بدون تحقيق برمجي حتى لو لم يذكر ذلك صراحة). - جميع المتغيرات المعرفة في الواجهة public static final حتى لو لم يذكر ذلك صراحة. - الصف الذي سيحقق الواجهة عليه تحقيق جميع التوابع المجردة في الواجهة أو يصبح صف مجرد. ```java interface Printable{ int MIN=5; void print(); } ``` ### ملاحظة: - بعد الإصدار 8 من جافا أصبح من الممكن أن تتضمن الواجهة توابع static - بعد الإصدار 9 من جافا أصبح من الممكن أن تتضمن الواجهة طرائق private. ### مثال - أكتب تعريف صف شجرة يتضمن عدد الحلقات وتابع لحساب عمر الشجرة. - تعريف صف شخص يتضمن سنة الميلاد تابع حساب العمر - عرف في main مصفوفة من الصفوف السابقة واطبع عمر كل عنصر - الحل: لا توجد علاقة وراثة بين الصفوف لذلك من الأفضل أن يكون التابع المشترك في واجهة لتحقيق الوراثة واستخدام مفاهيم غرضية التوجه. ```java class Tree implements Ageable { private int rings; public Tree(int r) { rings = r; } public void print () { System.out.println(rings); } public int age() { return rings; } } class Person implements Ageable{ private int yearbirth; public Person(int y) { yearbirth = y; } public void print () { System.out.println(yearbirth); } public int age() { return 2024-yearbirth; } } public interface Ageable{ int age(); } class InterfaceTest { public static void main(String[] args) { Ageable []a=new Ageable [3]; a[0]=new Tree(5); a[1]=new Person (2000); a[2]=new Person (1990); for (Ageable x:a) System.out.println(x.age()); } } ``` ### العلاقة بن الصفوف والواجهات - يمكن للصف أن يرث من صف آخر - يمكن للواجهة أن ترث من واجهة أخرى - يمكن للصف أن يحقق واجهة أو أكثر. - **العلاقة بين الصفوف والواجهات:** - يشير الخط الصلب إلى عملية *"الوراثة"*. - يشير الخط المنقط إلى عملية *"التطبيق"*. - **مخطط توضيحي للعلاقة:** ``` class | extends class interface | extends interface interface | implements class ``` ### الواجهة ذات العلامة أو الواجهة المميزة `marker or tagged interface` - الواجهة التي ليس لها عضو تُعرف بالواجهة ذات العلامة أو الواجهة المميزة. على سبيل المثال Cloneable و Serializable و Remote. - يتم استخدامها لتوفير بعض المعلومات الأساسية إلى JVM حتى تتمكن JVM من تنفيذ بعض العمليات المفيدة. ```java public interface Serializable{ } ``` ### Final - يمكن استخدام الكلمة المفتاحية final (ثابت) مع المتغيرات والصفوف والطرائق أيضاً. - **تعريف الصف كـ final:** - اذا تم تعريف الصف على أنه final ، فلا يمكننا أن نرث منه، أي لا يمكن أن يكون صف أب لصفوف أخرى. - يعرف بالشكل التالي: ```java final class Test{ } ``` - **تعريف الدوال كـ final:** - إذا تم تعريف الطريقة على أنها final ، يعني هذا أنه لا يمكن إعادة كتابتها في الصفوف الأبناء أي لا يمكن إجراء overriding). - يُعرف بالشكل التالي: ```java public final void method() { } ``` - **تعريف المتغير كـ final:** - إذا تم تعريف المتغير على أنه final ، يعني هذا أنه لا يمكن تغيير قيمته (سيكون ثابتاً). - يُعرف بالشكل التالي: ```java public final int x=10; ```

Use Quizgecko on...
Browser
Browser