التجريد Abstraction في الجافا هو طريقة لاخفاء تفاصيل التنفيذ Implementation لبعض العمليات و التركيز فقط على الهدف من التنفيذ. هناك طريقتين لتنفيذ التجريد في الجافا: استخدام الصنف المجرد abstract class واستخدام الواجهة Interface.
abstract
abstract هي احد الكلمات المحجوزة في الجافا وتستخدم مع الاصناف (class) و الدوال / الطرق methods.
الصنف المجرد abstract class
هو صنف تسبقة كلمة abstract ولا نستطيع ان ننشأ منه كائنات لكن نستطيع ان نرثه وان ننشأ من الاصناف الابناء child classes كائنات.
تشغيل// abstract نعرف صنف abstract class Counter{ // attributes نستطيع تعريف صفات int state; // Constructor ستطيع تعريف دالة الانشاء Counter(int state){ this.state = 0; } // methods نستطيع تعريف طرق int count(){ ++ state; return state; } } class Main{ public static void main(String[] args){ // abstract class يحدث خطأ لاننا لانستطيع ان ننشأ كائنات من الصنف المجرد Counter counter = new Counter(5);// ُError } }
الدوال / الطرق المجردة abstract methods
هي الدوال او الطرق methods التي عندما نعرفها تسبقها كلمة abstract، ويجب اذا عرفنا طريقة مجردة ان يكون الصنف ايضا مجرد. وهي طرق ليس لها تنفيذ Implementation ويتم تعريف تنفيذها في الاصناف الابناء.
تشغيل// abstract نعرف صنف abstract class Counter{ // attributes نستطيع تعريف صفات int state; // Constructor ستطيع تعريف دالة الانشاء Counter(int state){ this.state = state; } // abstract نعرف طريقة مجردة abstract int count(); } // (Parent Class) نستطيع الوصول الى كل صفات و طرق الثنف الاب class FootBallCounter extends Counter{ FootBallCounter(int state){ super(state); } // abstract نعرف طريقة تنفيذ الطريقة المجردة int count(){ ++ state; if(state > 45) { state = 0; } return state; } } class Main{ public static void main(String[] args){ // Counter نستطيع ان نعرف من نوع Counter counter = new FootBallCounter(0); System.out.println(counter.count());// 1 // FootBallCounter نستطيع ان نعرف من نوع FootBallCounter footballCounter = new FootBallCounter(0); System.out.println(footballCounter.count());// 1 } }
يجب ملاحظة انه في الصنف الاب (Parent Class) عند تعريف الطريقة المجردة abstract استبدلنا جسم (body)الطريقة، ب النقطة المنقوطة ";"
0 تعليقات