تشارك هذه المقالة استخدامين كلاسيكيين من واجهة Java للرجوع إليه. المحتوى المحدد كما يلي
1. مثال التحميل الديناميكي لواجهة جافا متعددة الأشكال
اكتب برنامجًا عامًا لحساب الوقت الذي يستغرقه المركبات غير الناقصة لتشغيل 1000 كيلومتر. من المعروف أن معلمات كل نقل هي 3 تعبيرات عن الأعداد الصحيحة A و B و C. هناك أداتان حاليتان: السيارة والطائرة ، حيث تكون صيغة حساب السرعة للسيارة هي: A+B+C. هناك ثلاثة فصول تحتاج إلى كتابة: Computetime.java ، palne.java ، car.java و interface common.java. مطلوب أنه إذا تمت إضافة مركبة النقل الثالثة في المستقبل ، فليس هناك حاجة لتعديل أي إجراءات سابقة ، ولكن هناك حاجة فقط إلى إجراءات مركبة النقل الجديدة. عملية التشغيل هي كما يلي:
أدخل المعلمات الأربعة للحساب من سطر الأوامر. الأول هو نوع السيارة ، والمعلمات الثانية والثالثة والرابعة هي الأعداد الصحيحة A و B و C. كمثال:
احسب وقت الطائرة: "الطائرة 20 30 40"
احسب وقت السيارة: "Car 23 34 45"
إذا كانت السيارة في المركز الثالث هي السفينة ، فأنت بحاجة إلى كتابة Ship.java ، ومدخلات وقت التشغيل: "السفينة 22 33 44"
نصيحة: الاستفادة الكاملة من مفهوم الواجهات ، وكائنات الواجهة تعمل كمعلمات.
طريقة أخرى لتثبيت كائن: class.forname (str) .newinstance () ؛ على سبيل المثال ، من الضروري إنشاء مثيل
لكائن طائرة ، ما عليك سوى الاتصال class.forname ("Plane"). NewInstance ().
شفرة:
1. computtime.java يرجى التأكد من أن الإدخال صحيح ، حيث لا يتم القبض
استيراد caltime.vehicle.all.common ؛ استيراد java .lang.*؛ فئة عامة computetime {public static void main (string args []) {system.out.println ("travel: "+args [2]) ؛ system.out.println (" المعلمة c: "+args [3]) ؛ double a = double.parsedouble (args [1]) ؛ double b = double.parsedouble (args [2]) ؛ double c = double.parsedouble (args [3]) class.forname ("caltime.vehicle."+args [0]) {system.out.println ("الفئة غير موجودة") ؛}}} 2.plane.java
package caltime.vehicle ؛ import caltime.vehicle.all.common ؛ طائرة الطبقة العامة تنفذ {public double runtimer (double a ، double b ، double c) {return (a + b + c) ؛}} 3. car.java
package caltime.vehicle ؛ import caltime.vehicle.all.common ؛ تبرز سيارة الفئة العامة الشائعة {public double runtimer (double a ، double b ، double c) {return (a*b/c) ؛}} 4.common.java
package caltime.vehicle.all ؛ الواجهة العامة المشتركة {double runtimer (double a ، double b ، double c) ؛} نتيجة تشغيل واحدة:
C:/ Java> Java Computetime Car 100 45 67
النقل: سيارة
المعلمة أ: 100
المعلمة ب: 45
المعلمة ج: 67
متوسط السرعة: 67.16417910447761 كم/ساعة
وقت التشغيل: 14.8888888888889 ساعات
C:/ Java> Java Computetime Plane 130 45 67
النقل: الطائرة
المعلمة أ: 130
المعلمة ب: 45
المعلمة ج: 67
متوسط السرعة: 242.0 كم/ساعة
وقت التشغيل: 4.132231404958677 ساعة
يوضح هذا المثال الاستخدام الكلاسيكي للواجهات ، وقد قام التفكير في Java أيضًا بتحليل عميق حول هذا الموضوع ، حتى تتمكن من التحقق منه.
2. يتم تمرير الواجهة كمعلمة للطريقة.
مثال:
واجهة تمديد {public void input () ؛} تنفس مفتاح الفئة keybroad extensable {public void input () {system.out.println ("/n hi ، يتم إدخال keybroad في ثم mainbroad!/n") ؛}} Mainbroad!/n ") ؛}} checkbroad {public void getMainMessage (ExtendBroadable Ext) {ext.input () ؛}} الفئة العامة interfacetest01 {public static void main (string [] CheckBroad () ؛ cb.getMainMessage (KB) ؛ cb.getMainMessage (NCB) ؛ }} يمكن استخدام معلمات نوع الواجهة كمعلمات طريقة. في الاستخدام الفعلي ، يمكن نقل الفئة التي تنفذ الواجهة إلى الطريقة ، ويمكن تنفيذ الطريقة وفقًا لمبدأ إعادة الكتابة. المكالمة الفعلية هي هيئة رمز الطريقة في فئة التنفيذ. هذا يسمح بتنفيذ وظائف مختلفة وفقًا للمعلمات المرسلة.
المهم هو أنه عندما أحتاج إلى كائن آخر في المستقبل ولديهم هيئة الطريقة الخاصة ، لا يتعين علينا إعادة كتابة الفصل الأصلي ، فنحن بحاجة فقط إلى فئة جديدة لتنفيذ الواجهة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.