في البرمجة الشيئية، يتم تعريف التجريد على أنه إخفاء التفاصيل غير الضرورية (التنفيذ) عن المستخدم والتركيز على التفاصيل الأساسية (الوظيفة). فهو يزيد من الكفاءة وبالتالي يقلل من التعقيد.
في جافا، يمكن تحقيق التجريد باستخدام فئات مجردة والأساليب. في هذا البرنامج التعليمي، سوف نتعلم عن الأساليب المجردة واستخدامها في جافا.
فئة مجردة
يتم إعلان الفصل مجردًا باستخدام خلاصة الكلمة الرئيسية. يمكن أن تحتوي على صفر أو أكثر من الأساليب المجردة وغير المجردة. نحن بحاجة إلى توسيع فئة مجردة وتنفيذ أساليبها. لا يمكن إنشاء مثيل له.
بناء الجملة لفئة مجردة:
abstract class class_name { //abstract or non-abstract methods }
ملاحظة: قد تحتوي أو لا تحتوي فئة مجردة على أساليب مجردة.
طريقة مجردة
تم الإعلان عن طريقة باستخدام خلاصة الكلمة الأساسية ضمن فئة مجردة وليس لها تعريف (التنفيذ) تسمى طريقة مجردة.
عندما نحتاج فقط إلى إعلان الطريقة في فئة فائقة، فيمكن تحقيق ذلك عن طريق الإعلان عن الأساليب كملخصات.
تُسمى الطريقة المجردة أيضًا بمسؤولية الفئة الفرعية لأنها لا تحتوي على تطبيق في الفئة الفائقة. لذلك يجب أن تتجاوزها فئة فرعية لتوفير تعريف الطريقة.
بناء جملة الطريقة المجردة:
abstract return_type method_name( [ argument-list ] );
هنا، لا تحتوي الطريقة المجردة على نص طريقة. قد يكون لها صفر أو أكثر من الحجج.
نقطة لنتذكر
النقاط التالية هي القواعد المهمة للطريقة المجردة في Java:
- لا تحتوي الطريقة المجردة على نص (تنفيذ)، بل تحتوي فقط على توقيع الطريقة (إعلان). تطبق الفئة التي توسع الفئة المجردة الأساليب المجردة.
- إذا قامت فئة غير مجردة (ملموسة) بتوسيع فئة مجردة، فيجب على الفصل تنفيذ جميع الأساليب المجردة لتلك الفئة المجردة. إذا لم يكن الأمر كذلك، فيجب الإعلان عن الفئة الملموسة على أنها مجردة أيضًا.
- نظرًا لأن الأساليب المجردة تحتوي فقط على التوقيع، فإنها تحتاج إلى فاصلة منقوطة (؛) في النهاية.
- فيما يلي مختلف تركيبات غير قانونية من المعدلات الأخرى للطرق فيما يتعلق خلاصة المعدل:
- أخير
- مجردة الأصلي
- مجردة متزامنة
- مجردة ثابتة
- مجردة خاصة
- مجردة صارمةfp
- إذا كان الفصل يحتوي على طريقة مجردة، فيجب أن يكون مجردًا والعكس غير صحيح.
مثال على الطريقة المجردة في جافا
مثال 1:
في المثال التالي، سوف نتعلم كيفية تحقيق التجريد باستخدام الفئات المجردة والأساليب المجردة.
AbstractMethodEx1.java
// abstract class abstract class Multiply { // abstract methods // sub class must implement these methods public abstract int MultiplyTwo (int n1, int n2); public abstract int MultiplyThree (int n1, int n2, int n3); // regular method with body public void show() { System.out.println ('Method of abstract class Multiply'); } } // Regular class extends abstract class class AbstractMethodEx1 extends Multiply { // if the abstract methods are not implemented, compiler will give an error public int MultiplyTwo (int num1, int num2) { return num1 * num2; } public int MultiplyThree (int num1, int num2, int num3) { return num1 * num2 * num3; } // main method public static void main (String args[]) { Multiply obj = new AbstractMethodEx1(); System.out.println ('Multiplication of 2 numbers: ' + obj.MultiplyTwo (10, 50)); System.out.println ('Multiplication of 3 numbers: ' + obj.MultiplyThree (5, 8, 10)); obj.show(); } }
انتاج:
مثال 2:
بشكل افتراضي، تكون كافة أساليب الواجهة عامة ومجردة. لا يمكن أن تحتوي الواجهة على طرق ملموسة، أي طرق عادية مع النص.
AbstractMethodEx2.java
// interface interface SquareCube { // abstract methods public abstract int squareNum (int n); // it not necessary to add public and abstract keywords // as the methods in interface are public abstract by default int cubeNum (int n); // regular methods are not allowed in an interface // if we uncomment this method, compiler will give an error /*public void disp() { System.out.println ('I will give error if u uncomment me'); } */ } public class AbstractMethodEx2 implements SquareCube { // defining the abstract methods of interface public int squareNum (int num) { return num * num; } public int cubeNum (int num) { return num * num * num; } // main method public static void main(String args[]){ SquareCube obj = new AbstractMethodEx2(); System.out.println('Square of number is: ' + obj.squareNum (7) ); System.out.println('Cube of number is: ' + obj.cubeNum (7)); } }
انتاج:
بهذه الطريقة، تعلمنا عن الطريقة المجردة وتنفيذها في جافا.