يمكن تضمين مفهوم واستخدام واجهة Java <BR /> في فئة مجردة.
تم الإعلان عن الكلمة الرئيسية للواجهة ، والتي يمكن اعتبارها فئة مجردة خاصة تحدد ما يجب أن يفعله الفصل ، بدلاً من تحديد كيفية قيامه بذلك.
هناك أيضًا العديد من الأمثلة على الواجهات في الواقع ، مثل محركات الأقراص الصلبة للكمبيوتر التسلسلية. لجنة ATA التسلسلية ليست مسؤولة عن إنتاج محركات الأقراص الصلبة ، ولكنها تحدد فقط المواصفات الشائعة.
ستنتج Seagate و Hitachi و Samsung وغيرها من الشركات المصنعة التي تلبي الواجهة وفقًا للمواصفات ، ويمكن تعميم هذه الأقراص الصلبة. 320G Seagate Serial Hard Disk وتثبيته.
يمكن للمدونة التالية محاكاة لجنة ATA التسلسلية لتحديد واجهة القرص الصلبة التسلسلي التالي:
// واجهة القرص الصلبة التسلسلية SATAHDD {// عدد خطوط الاتصال العامة الثابتة int_line = 4 ؛ملاحظة: تكون متغيرات الأعضاء المعلنة في الواجهة كلها نهائية ثابتة عامة بشكل افتراضي ويجب عرضها تهيئة. لذلك ، يمكن حذف هذه المعدلات عند إعلان الثوابت.
الواجهات عبارة عن مجموعة من العديد من الثوابت والأساليب المجردة ، والتي يبدو أنها تشبه حاليًا الطبقات التجريدية. في الواقع ، تطورت الواجهات من فصول مجردة ، لذلك ما لم ينص على خلاف ذلك ، تتمتع واجهات بنفس "العلاج" كطبقات. على سبيل المثال ، يمكن تحديد فئات أو واجهات متعددة في برنامج المصدر ، ولكن يمكن أن تتوفر في معظم الفئة العامة أو الواجهة. مثل تنسيق الميراث للفئة ، يمكن أيضًا مورث واجهات ، ويمكن أن ترث المداخل الفرعية الثوابت والطرق المجردة في الواجهة الأصل وإضافة طرق مجردة جديدة ، إلخ.
ومع ذلك ، فإن الواجهة لها خصائصها الخاصة ، ملخصة على النحو التالي.
1) يمكن تعريف الأساليب المجردة فقط في الواجهة. إن محاولة تحديد متغيرات المثيل وطرق مثيل غير مجردة والأساليب الثابتة في الواجهة كلها غير قانونية. على سبيل المثال:
الواجهة العامة SATAHDD {// عدد خطوط الاتصال العامة. يكون النوع العام // اقرأ البيانات الثابتة العامة readData () {// خطأ في التجميع ، لا يمكن أن تحتوي الواجهة على طريقة ثابتة "بيانات" ؛3) لا يوجد مُنشئ في الواجهة ولا يمكن إنشاء مثيل له.
4) لا تنفذ واجهة واجهة أخرى ، ولكن يمكن أن ترث واجهات أخرى متعددة. تعوض ميزة الواجهة المتعددة للواجهة للميراث الفردي للفئة. على سبيل المثال:
// واجهة القرص الصلبة التسلسلي يمتد SATAHDD A ، B {// عدد خطوط الاتصال الثابتة العامة int_line = 4 ؛ ؛لماذا تستخدم واجهة
في تطوير المشروع على نطاق واسع ، قد يكون من الضروري إدراج فئة من منتصف سلسلة الميراث للسماح لدراساتها الفرعية أن يكون لها وظائف معينة دون التأثير على فئات الوالدين. على سبيل المثال ، a -> b -> c -> d -> e ، A عبارة عن فئة أجداد. فصل. لكن المشكلة هي أن Java هي لغة ميراث واحدة. وبهذه الطريقة ، تؤثر التعديلات على فئات C و D و E على سلسلة الميراث بأكملها وليست قابلة للتوصيل.
الواجهة هي ضمان إدراج. يمكن لأي فئة في سلسلة الميراث تنفيذ واجهة ، والتي ستؤثر على جميع الفئات الفرعية في هذه الفئة ، ولكنها لن تؤثر على أي فئة من الوالدين في هذه الفئة. سيتعين على مثل هذه الفئات تنفيذ الطرق المحددة في هذه الواجهة ، ويمكن أن ترث الفئات الفرعية هذه الطرق تلقائيًا من هذه الفئة ، وفي هذا الوقت ، تكون هذه الفئات الفرعية قابلة للتجميع.
ما نهتم به ليس فئة محددة ، ولكن ما إذا كان هذا الفصل ينفذ الواجهة التي نحتاجها.
توفر الواجهة مكالمات الاستيفاء والطريقة.
تلعب الواجهات دورًا مهمًا في برمجة Java الموجهة نحو الكائن. في الواقع ، تتمثل إحدى المهام الأكثر أهمية في مرحلة التصميم في تصميم واجهات كل جزء ، ثم تشكيل بنية الإطار الأساسية للبرنامج من خلال مزيج من الواجهات.
استخدام الواجهات
يختلف استخدام الواجهات إلى حد ما عن الفصول الدراسية. عندما تحتاج إلى استخدام فئة ، سيتم استخدام الكلمة الرئيسية الجديدة مباشرة لإنشاء مثيل للفئة ، ولكن لا يمكن استخدام الواجهة مثل هذه لأن الواجهة لا يمكنها استخدام الكلمة الرئيسية الجديدة مباشرة لإنشاء مثيل.
يجب أن تنفذ الواجهة أساليبها التجريدية من خلال الفصل ، ثم إنشاء إنشاء الفصل. الكلمة الرئيسية لواجهة تنفيذ الفئة هي الأدوات.
إذا لم يتمكن الفصل من تنفيذ جميع الطرق المجردة للواجهة ، فيجب تعريف الفصل كطريقة مجردة.
لا يُسمح بإنشاء مثيل الواجهة ، ولكن يُسمح بتحديد متغير مرجعي لنوع الواجهة ، والذي يشير إلى مثيل للفئة التي تنفذ الواجهة.
يمكن للفئة أن ترث فئة الوالدين فقط ، ولكن يمكنها تنفيذ واجهات متعددة.
شكل واجهة التنفيذ كما يلي:
يمتد اسم فئة الفئة المعدل الذي يمتد فئة الوالدين واجهات متعددة {
طريقة التنفيذ
}
يرجى الاطلاع على المثال التالي:
استيراد java.lang.system SAMSUNG HARD DISK}} ؛}// إصلاح واجهة القرص الثابت fixhdd {// الإصلاح عنوان سلسلة العنوان = "حي هايديان ، Beijing" ؛ String readData () {Return "Data" ؛ . لا يمكن للقرص الثابت ذات الجودة السيئة كتابة الفئة المجردة للبيانات XXHDD SATAHDD {// قرص HARD DATIONS Public readData () {Return "Data" ؛استخدم الواجهة كنوع
يتم استخدام الواجهة كنوع مرجعي. حدد أنه ينبغي أن يكون طريقة الفئة المستخدمة هي في الواقع استدعاء طريقة فئة التنفيذ المقابلة.
الأمثلة على النحو التالي:
demo class public {public void test1 (a) {a.dosth () ؛ أ) ؛ نتائج التشغيل:
الآن في ب
كما ترى ، يمكن استخدام واجهات كنوع ، باستخدام واجهات كمعلمات طرق وأنواع الإرجاع.
الفرق بين واجهة Java وفئات الفئة المجردة <BR /> هي قوالب كائنات ، ويمكن اعتبار الفئات والواجهات المجردة كقوالب للفئات الخرسانية.
نظرًا لأن من منظور معين ، فإن الواجهات هي فئة مجردة خاصة ، ولديها اتصال عميق ولديهم أوجه تشابه كبيرة ، لذلك من السهل الخلط حول من يجب استخدامه. نقوم أولاً بتحليل أوجه التشابه التي لديهم.
أنها جميعها تمثل طبقات مجردة من الهياكل الشبيهة بالأشجار. عند استخدام المتغيرات المرجعية ، حاول استخدام الطبقة المجردة من بنية الفصل لفصل تعريف وتنفيذ الطريقة.
لا يمكن إنشاء أي منهم.
يمكن أن تحتوي جميعها على طرق مجردة. تُستخدم الطرق المجردة لوصف الوظائف التي يوفرها النظام دون الاضطرار إلى الاهتمام بالتطبيقات المحددة.
دعنا نتحدث عن الاختلافات الرئيسية بين الفصول التجريدية والواجهات.
1) يمكن أن توفر الفئات المجردة بعض الطرق المتكررة في هذه الطرق في الفئات الفرعية ، وتحسين قابلية الكود.
الفئة العامة A {Public Abstract Void Method1 () ؛ method1 () {// c method1}}يحتوي الخلاصة من الفئة A على فئتين فرعيتين B و C. نظرًا لأن A لديه تطبيق Method of Method2 في ذلك ، لا تحتاج طريقة Method2 إلى إعادة كتابة الفئات الفرعية B و C. سلوك الفئات الفرعية. Method2 هو مثال على الكود القابل لإعادة الاستخدام. لا يحدد A تنفيذ Method1 ، أي أن B و C يمكنه تنفيذ طريقة Method1 وفقًا لخصائصها الخاصة ، والتي تعكس خصائص الاقتران الفضفاض.
قم بتغييره إلى الواجهة وانظر:
الواجهة العامة A {public void method1 () ؛ ينفذ A {public void method1 () {// c method1} public void method2 () {// c method2}}لا يمكن للواجهة A توفير وظائف عامة لتنفيذ الفئتين B و C ، مما يعني أنه لا يمكن أن تقيد سلوك B و C. يمكن أن يمارس B و C بحرية خصائصهما وطرقها الواقعة 1 وطرق Method2 ، والواجهة A ليس لها قدرة على التحكم.
2) يمكن للفئة أن يرث فقط فئة الوالدين المباشرة (ربما فئة مجردة) ، ولكن يمكن للفئة تنفيذ واجهات متعددة ، وهي ميزة الواجهة.
الواجهة A {public void method2 () ؛} واجهة B {public void method1 () ؛} class C تنفذ A ، b {public void method1 () {// c method1} public ic void method2 () {// c method2} } // c يمكن استخدامها بمرونة للغاية ، و C لديها الفرصة لتوسيع وتنفيذ واجهات أخرى a = new c () ؛ يمتد الفئة B إلى {public Abstract Void method2 () ؛} Class C يمتد B {public void method1 () {// c method1} public void method2 () {// c method2}}بالنسبة للفئة C ، لن تكون هناك فرصة لروث فصول الوالدين الأخرى.
لتلخيص الواجهات والفصول المجردة ، مزاياها وعيوبها.
يجب دائمًا تحديد النموذج السلوكي من خلال واجهات بدلاً من فئات مجردة ، لذلك عادة ما يتم تفضيل الواجهات ويجب استخدام الفئات المجردة في أقل عدد ممكن.
عند اختيار فئة مجردة ، عادة ما يكون هذا هو الموقف التالي: تحتاج إلى تحديد سلوك الفئة الفرعية وتوفير وظائف عامة للفئة الفرعية.