فئة مجردة مقابل. الواجهة في Java: الشرح بالأمثلة

تُستخدم فئات الملخصات والواجهات للتجريد في Java. يشير التجريد في البرمجة الشيئية إلى إخفاء تفاصيل التنفيذ عن المستخدمين النهائيين.

في التجريد ، يمكنك معرفة الوظائف ، لكن لا يمكنك معرفة كيفية تنفيذها.

دعونا نلقي نظرة على كل منها ونحاول فهم سبب استخدامها.

فئة مجردة

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

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

يمكنك إنشاء فئة مجردة عن طريق تحديد الكلمة الأساسية مجردة قبل الكلمة الأساسية للفئة.

abstract class abstractClass {
    void run() {
        System.out.println("ran");
    }
}

يمكن تمديد فئة مجردة بواسطة فئات أخرى. بمعنى آخر ، يمكن تصنيفها أيضًا.

abstract class AbstractClass {
    void run() {
        System.out.println("ran");
    }
}

class ExtendingAbstractClass extends AbstractClass {
    void newMethod() {
        System.out.println("new");
    }

    @Override
    void run() {
        System.out.println("override");
    }
}

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

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

  كيفية إنشاء NFT مجانًا بدون رسوم غاز

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

بادئ ذي بدء ، قم بإنشاء فئة سيارات سيتم تمديدها بواسطة فئات متعددة من أنواع مختلفة من السيارات.

abstract class Car {
    void start() {
        // implementation
        System.out.println("runs car");
    }

    void stop() {
        // implementation
        System.out.println("engine stops");
    }

    void reverse() {
        // implementation
        System.out.println("reverse mode enabled");
    }

    abstract void selfDrive();
}

تعتبر الطريقة start () و stop () و reverse () طرقًا شائعة في جميع السيارات. لذلك تم تحديد تنفيذها بالفعل داخل فئة السيارة نفسها. ومع ذلك ، يمكن أن يكون لنوع معين من السيارات تطبيقات مختلفة لوضع القيادة الذاتية. وبالتالي ، يمكنك تعريف selfDrive () كطريقة مجردة وتنفيذها بطرق مختلفة في فئات مختلفة من أنواع مختلفة من السيارات.

class CarTypeA extends Car {
    @Override
    void start() {
        super.start();
    }

    @Override
    void stop() {
        super.stop();
    }

    @Override
    void reverse() {
        super.reverse();
    }

    void selfDrive() {
        // custom implementation
        System.out.println("Type A self driving mode enabled");
    }
}
class CarTypeB extends Car {
    // ...all similar methods

    void selfDrive() {
        // custom implementation
        // different implementation than CarTypeB
        System.out.println("Type B self driving mode enabled");
    }
}

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

واجهه المستخدم

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

  4 مولدات ميمي AI لاستخدامها على الفور

لذلك ، إذا قمت بتطبيق واجهة لسيارة في فئة ، فيجب عليك تنفيذ جميع الطرق حتى تعمل السيارة بشكل صحيح وآمن.

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

يمكنك إنشاء واجهة باستخدام الكلمة الأساسية للواجهة.

interface CAR {
    void start();
    void stop();
    void move();
}

قم بتنفيذ واجهة باستخدام الكلمة الأساسية للأدوات عند تحديد فئة.

class CarTypeB implements CAR {
    public void start() {
        System.out.println("started");
    }

    public void stop() {
        System.out.println("stopped");
    }

    public void move() {
        System.out.println("running");
    }
}

تشابه

لا يوجد مثيل ككائن هو الشيء الوحيد المشترك بين الفئات والواجهات المجردة.

اختلافات

فئة AbstractInterfaceInheritance & Implementation يمكن للفصل أن يرث فئة مجردة واحدة فقط ، ويمكن تنفيذ واجهات متعددة بواسطة فئة أنواع المتغيرات يمكن أن تحتوي على متغيرات نهائية وغير نهائية وثابتة وغير ثابتة ، ويمكن أن تحتوي فقط على متغيرات ثابتة ونهائية. أنواع الطريقة: يمكن أن تحتوي على كل من الأساليب المجردة وغير المجردة ، ويمكن أن تحتوي فقط على طرق مجردة ، لكن الطرق الثابتة استثناء ، ومعدلات الوصول ، يمكن أن يكون للفئة المجردة معدِّل وصول ، وتكون تواقيع الطريقة المعرفة في الواجهة عامة افتراضيًا. لا تحتوي الواجهة على معدل وصول.

  8 طرق لإصلاح Mangago لا يعمل

متى تستخدم فئة مجردة وواجهة؟

استخدم فئات مجردة عندما:

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

يمكنك استخدام الواجهات عندما:

  • تريد تحديد سلوك الفصل الذي يقوم بتنفيذ الواجهة ، لكنك لا تهتم بالطريقة التي يتم تنفيذها بها.
  • تريد التأكد من أن الفصل ينفذ جميع الطرق لتعمل بشكل صحيح.

الكلمات الأخيرة

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

تُستخدم فئات الخلاصة عمومًا لمشاركة الأساليب المجردة وغير المجردة الشائعة بين فئات متعددة ، مما يوسع فئة الملخص لجعل الكود أكثر قابلية لإعادة الاستخدام.

تعرف على المزيد حول Java بمساعدة هذه الدورات التدريبية عبر الإنترنت لـ Java. هل تستعد لمقابلة على جافا؟ فيما يلي بعض أسئلة المقابلة حول البرمجة الشيئية.