logo

فئة مجردة في جافا

تُعرف الفئة التي تم الإعلان عنها باستخدام الكلمة الأساسية المجردة بالفئة المجردة جافا . يمكن أن يكون لها طرق مجردة وغير مجردة (طريقة مع الجسم).

قبل تعلم فئة Java المجردة، دعونا نفهم التجريد في Java أولاً.

تعليق متعدد الأسطر بوويرشيل

التجريد في جافا

التجريد هي عملية إخفاء تفاصيل التنفيذ وإظهار الوظيفة فقط للمستخدم.

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

يتيح لك التجريد التركيز على ما هدف يفعل بدلا من كيف يفعل ذلك.

طرق تحقيق التجريد

هناك طريقتان لتحقيق التجريد في Java

  1. فئة مجردة (0 إلى 100%)
  2. الواجهة (100%)

فئة مجردة في جافا

تُعرف الفئة التي تم الإعلان عنها على أنها مجردة باسم فئة مجردة . يمكن أن يكون لها طرق مجردة وغير مجردة. يجب تمديده وتنفيذ طريقته. لا يمكن إنشاء مثيل له.

نقطة لنتذكر

  • يجب الإعلان عن فئة مجردة باستخدام كلمة أساسية مجردة.
  • يمكن أن يكون لها طرق مجردة وغير مجردة.
  • لا يمكن إنشاء مثيل له.
  • يمكن أن يكون بناة والأساليب الثابتة أيضًا.
  • يمكن أن تحتوي على طرق نهائية ستجبر الفئة الفرعية على عدم تغيير نص الطريقة.
قواعد لفئة Java Abstract

مثال على فئة مجردة

 abstract class A{} 

الطريقة المجردة في جافا

تُعرف الطريقة التي تم الإعلان عنها على أنها مجردة ولا تحتوي على تطبيق بالطريقة المجردة.

مثال على الطريقة المجردة

 abstract void printStatus();//no method body and abstract 

مثال على فئة مجردة لديها طريقة مجردة

في هذا المثال، الدراجة هي فئة مجردة تحتوي على طريقة مجردة واحدة فقط. يتم تنفيذه من خلال فئة هوندا.

 abstract class Bike{ abstract void run(); } class Honda4 extends Bike{ void run(){System.out.println('running safely');} public static void main(String args[]){ Bike obj = new Honda4(); obj.run(); } } 
اختبره الآن
 running safely 

فهم السيناريو الحقيقي لفئة الملخص

في هذا المثال، الشكل هو الفئة المجردة، ويتم توفير تنفيذه من خلال فئتي المستطيل والدائرة.

في الغالب، لا نعرف شيئًا عن فئة التنفيذ (المخفية للمستخدم النهائي)، ويتم توفير كائن فئة التنفيذ بواسطة طريقة المصنع .

أ طريقة المصنع هي طريقة تقوم بإرجاع مثيل الفئة. وسنتعرف على طريقة المصنع لاحقا.

في هذا المثال، إذا قمت بإنشاء مثيل لفئة Rectangle، فسيتم استدعاء أسلوب draw() لفئة Rectangle.

الملف: TestAbstraction1.java

 abstract class Shape{ abstract void draw(); } //In real scenario, implementation is provided by others i.e. unknown by end user class Rectangle extends Shape{ void draw(){System.out.println('drawing rectangle');} } class Circle1 extends Shape{ void draw(){System.out.println('drawing circle');} } //In real scenario, method is called by programmer or user class TestAbstraction1{ public static void main(String args[]){ Shape s=new Circle1();//In a real scenario, object is provided through method, e.g., getShape() method s.draw(); } } 
اختبره الآن
 drawing circle 

مثال آخر على فئة الملخص في Java

الملف: TestBank.java

 abstract class Bank{ abstract int getRateOfInterest(); } class SBI extends Bank{ int getRateOfInterest(){return 7;} } class PNB extends Bank{ int getRateOfInterest(){return 8;} } class TestBank{ public static void main(String args[]){ Bank b; b=new SBI(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); b=new PNB(); System.out.println('Rate of Interest is: '+b.getRateOfInterest()+' %'); }} 
اختبره الآن
 Rate of Interest is: 7 % Rate of Interest is: 8 % 

فئة مجردة تحتوي على مُنشئ وعضو بيانات وأساليب

يمكن أن تحتوي الفئة المجردة على عضو بيانات، وطريقة مجردة، ونص الطريقة (طريقة غير مجردة)، ومنشئ، وحتى الطريقة الرئيسية ().

إدخال جافا

الملف: TestAbstraction2.java

 //Example of an abstract class that has abstract and non-abstract methods abstract class Bike{ Bike(){System.out.println('bike is created');} abstract void run(); void changeGear(){System.out.println('gear changed');} } //Creating a Child class which inherits Abstract class class Honda extends Bike{ void run(){System.out.println('running safely..');} } //Creating a Test class which calls abstract and non-abstract methods class TestAbstraction2{ public static void main(String args[]){ Bike obj = new Honda(); obj.run(); obj.changeGear(); } } 
اختبره الآن
 bike is created running safely.. gear changed 

القاعدة: إذا كان هناك طريقة مجردة في الفصل، فيجب أن يكون هذا الفصل مجردًا.

 class Bike12{ abstract void run(); } 
اختبره الآن
 compile time error 

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


سيناريو حقيقي آخر للفصل المجرد

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

ملحوظة: إذا كنت مبتدئًا في لغة Java، فتعلم الواجهة أولاً وتخطى هذا المثال.

 interface A{ void a(); void b(); void c(); void d(); } abstract class B implements A{ public void c(){System.out.println('I am c');} } class M extends B{ public void a(){System.out.println('I am a');} public void b(){System.out.println('I am b');} public void d(){System.out.println('I am d');} } class Test5{ public static void main(String args[]){ A a=new M(); a.a(); a.b(); a.c(); a.d(); }} 
اختبره الآن
 Output:I am a I am b I am c I am d