الفئة المجردة في جافا Abstract class in java
جميع الفئات الموروثة من الفئة المجردة "X" ، يجب أن تحتوي
على المناهج المجردة (الفئة المجردة فقط) التي تم تعريفها في الفئة المجردة "X" (يجب تنفيذ المناهج
المجردة الموروثة التي تم تعريفها في الفئة المجردة "X")
.
المناهج
المجردة = abstract methods
الفئة
المجردة = Abstract Class
لماذا نستخدم الفئة المجردة في جافا
إذا كانت فئة في أحد برامج جافا غير محتاجة للحصول
على مثيل (نحن لا نريد إنشاء كائن object) من هذه الفئة أو نريد منع
أي شخص من إنشاء مثيل من فئة التي من المفترض أن يتم تمديدها أولًا)
فسوف نأخذها على أنها فئة مجردة باستخدام الكلمة abstract،
ولكن بالأحرى هذه الفئة هي متاحة لبقية الفئات الأخرى ليمتدوا منها. الفئات الموروثة
من فئة مجردة، تفرض خصائص مشتركة مع الفئة المجردة الفائقة (super abstract class).
مثيل
= instance = object
إنشاء مثيل = instantiating = create object
الفئة
الفائقة (السوبر) = super class
Car، Bus و Truck
هي فئات موروثة عن الفئة المجردة Vehicle.
تفرض كل هذا الفئات خصائص مشتركة من Vehicle. ولكن لا يمكننا إنشاء مثيل
للفئة Vehicle
(لا يمكن إنشاء كائن من فئة Vehicle)
بدلا من ذلك يمكننا إنشاء مثيل للفئات Car ، Bus وTruck
(يمكننا إنشاء كائن من الفئات Car ، Bus
وTruck).
Car = سيارة
Bus = حافلة
Truck = شاحنة
Vehicle = مركبة
الواجهة في جافا Interface in Java
الواجهة لا يمكنها أن تمتلك إلا إعلان المناهج (تحتوي
فقط إلا على توقيع المنهج) والإعلانات الثابتة constant declarations
(متغير الإعلانات variable
declarations التي تم
تعريفها على حد سواء الثابت static والنهائية
final).
لا يمكن إنشاء مثيل لواجهة (لا يمكن إنشاء كائن من واجهة)، الفئات التي تنفذ implements واجهة معينة، يجب أن تحتوي على كافة المناهج التي تم إعلانها في هذه الواجهة.
الواجهة لا يمكن أن يكون لديها مناهج ملموسة بل مجرد إعلانات للمناهج أي أسماء هذه
المناهج (مناهج الواجهة لا يمكن أن يكون لها الجسم). السماح بتعدد المواريث Multiple inheritances.
فقط الحقول المعرفت بالثابتة static والنهائية
final
التي يمكن أن تظهر في الواجهة.
الإعلانات
الثابتة = constant declarations
توقيع المنهج
= method signature
متغير
= variable
الثابتة
= static
النهائية
= final
لماذا نستخدم الواجهة في جافا
بما أن جافا لا تسمح بتعدد المواريث Multiple inheritances
يمكن للمطورين استخدام الواجهات كحل لذلك، من خلال تنفيذ الواجهات.
ولا يمكن لفئة في جافا ان تمتد الا من فئة واحدة، ولكن يمكنها ان تنفذ أي عدد من الواجهات.
الفرق بين الفئة المجردة
Abstract
class
و الواجهة Interface
الفرق بين الفئة المجردة و الواجهة،
هو أن في الفئة مجردة يمكن أن يكون لدينا مناهج ملموسة بالإضافة إلى الإعلان على المناهج
المجردة، ولكن في الواجهة لدينا فقط الإعلان على المناهج.
الفئة المجردة Abstract class
|
الواجهة Interface
|
لا يمكننا إنشاء كائن
|
لا يمكننا إنشاء كائن
|
أن الفئة الموروثة من فئة مجردة يجب أن يكون لها
جميع المناهج مجردة من هذه الفئة مجردة.
|
الفئات التي تنفذ واجهة يجب أن تحتوي على جميع
المناهج الموجودة في هذه الواجهة.
|
الفئة المجردة يمكن أن تحتوي على مناهج ملموسة
(مناهج الفئة المجردة يمكن أن يكون لها جسم)
|
الواجهات لا يمكن أن تحتوي على مناهج ملموسة
(مناهج الواجهة لا يمكن أن يكون لها جسم)
|
مناهج مجردة + مناهج ملموسة (يكون لها الجسم)
|
فقط إعلانات المناهج أي أسماء هذه المناهج (مناهج
الواجهة لا يمكن أن يكون لها الجسم)
|
لا يمكنك استخدامها لفئة سبق توريثها
|
يمكنك استخدامها لفئة سبق توريثها
|
ككل الفئات في جافا، الوراثة المتعددة Multiple inheritance لا يسمح بها أيضا مع الفئات المجردة.
|
الوراثة المتعددة Multiple inheritance مسموح بها
|
جميع المناهج في الواجهة، ضمنيا تعد عامة public و مجردة abstract
|
|
يمكن لفئة ان تمتد من فئة واحدة فقط، ولكن يمكنها
تنفيذ أي عدد من واجهات
|
يمكن لواجهة أن تمتد من واجهة واحد أو عدة واجهات.
|
على عكس الواجهات، الفئات المجردة يمكن أن تحتوي
على حقول ليست ثابتة static و ليست نهائية final.
|
الحقول الثابتة static والنهائية final فقط التي
يمكن أن تظهر في الواجهة.
|