JavaRush /مدونة جافا /Random-AR /لماذا هناك حاجة للواجهات؟
Павел
مستوى

لماذا هناك حاجة للواجهات؟

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

إخلاء المسؤولية: في هذه المقالة والمقالات اللاحقة، سيتم ذكر أسماء الفئات والأساليب باللغة الروسية.

عندما يتعلق الأمر بمبادئ البرمجة كائنية التوجه (OOP): تعدد الأشكال، والميراث، والتغليف، فمن المفيد استخدام القياسات الواقعية. الميزة الكبرى لـ OOP هي أنه يمكننا محاكاة جزء من الكون الحقيقي في البرنامج. دعونا نمثل عائلة إيفانوف : أبي وأمي وصبي بيتيا . ورث بيتيا من أبي عادة الالتهام عند شرب الشاي، ومن أمي ورث عادة زم شفتيه أثناء القراءة. إذا حاولنا تنفيذ هذا الوضع في برنامج ما، فسننتهي بثلاث فئات:
class Папа
class Мама
class Петя
لدى أبي وأمي عادات يجب نقلها إلى بيت . العادات هي أفعال من نوع ما - لذا فمن الأفضل تنفيذها في عالم البرمجيات كطرق: أبي أولاً :
class Папа {
public void прихлюпывать() {
System.out.println("Хлюп");
    }
}
الآن أمي :
class Мама {
public void поджимать() {
System.out.println("Поджать губки");
   }
}
إذا كنا نتحدث عن الميراث، فمن المنطقي أن نكتب الكود على النحو التالي:
class Петя extends Папа, Мама {
@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
أي أن ترث بيتيا من أبي وأمي في نفس الوقت . إذا كتبت الأمر بهذه الطريقة، فسوف يشكو المترجم لأن Java لا يمكنها تنفيذ وراثة فئات متعددة. بالمناسبة، هذا ممكن في C++، ولكن ليس في Java، لأنه يمكن أن تنشأ مشاكل كبيرة مع الميراث المتعدد: يكتبون بالتفصيل على الإنترنت . لماذا هناك حاجة للواجهات؟  - 1للتغلب على هذا "المستحيل"، تحتوي Java على واجهات. وبالنسبة للعادات سوف نتوصل إلى واجهة خاصة بنا. وحتى الثاني: سيكونون هكذا:
public interface ПривычкиПапы {
    public void прихлюпывать();
}
public interface ПривычкиМамы {
    public void поджимать();
}
في الواجهة، وصفنا العادات فقط، لكننا لم نصف ما تفعله على وجه التحديد، لأننا سنكتب التنفيذ المحدد في الفصول الدراسية. أولاً ، دعونا نعطي أبي وأمي عاداتهم القانونية.
class Папа implements ПривычкиПапы {

   @Override
    public void прихлюпывать() {
     System.out.println("Хлюп");
   }
}

class Мама implements ПривычкиМамы{

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
والآن، أصبح من القانوني تمامًا نقل العادات من الأب والأم إلى بيت في نفس الوقت
class Петя implements ПривычкиПапы, ПривычкиМамы {

@Override
public void прихлюпывать() {
     System.out.println("Хлюп");
   }

@Override
public void поджимать() {
System.out.println("Поджать губки");
    }
}
وهذا يعني أن التنفيذ المتعدد (يسمى غالبًا التنفيذ) في Java أمر ممكن تمامًا. لماذا هناك حاجة للواجهات؟  - 2يجب أن يكون معنى الواجهات الآن واضحًا - في Java، يمكنك تنفيذ وراثة متعددة باستخدام الواجهات. إذا قمنا بتطوير الوضع أكثر، على سبيل المثال: بعد كل شيء، ربما يكون لدى أبي وأمي عادات لم ينقلوها إلى بيتيا ، وقد يكون لدى بيتيا أيضًا عاداته الشخصية. سوف تتعلم كيفية نقل سانتا باربرا الحيوية إلى مستوى جافا في الحلقات التالية. هذا ليس المثال الوحيد لفهم الواجهات، إذا لم تكن قد قرأت المقالات التالية، فتأكد من قراءة: الواجهات في Java (إذا لم تكن مفتوحة، يمكنك الخروج من ملف التعريف الخاص بك أو القراءة في وضع التصفح المتخفي) لماذا هناك حاجة إلى الواجهات في Java Java - قم بتنفيذ جميع الأمثلة الواردة في المقالة هنا وقم بتغيير الأساليب في كل من الواجهات والفئات: أسماء الطرق، والتوقيعات (ما تأخذه الطريقة كمدخل)، وأنواع طرق الإخراج. افهم بنفسك: - الفرق عند تنفيذ واجهة مع فئة وفئة مجردة؛ - الأساليب الافتراضية.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION