java interface的兩個經典用法。本站提示廣大學習愛好者:(java interface的兩個經典用法)文章只能為提供參考,不一定能成為您想要的結果。以下是java interface的兩個經典用法正文
本文為年夜家分享了java interface的兩個經典用法,供年夜家參考,詳細內容以下
1.Java多態接口靜態加載實例
編寫一個通用法式,用來盤算沒一種交通對象運轉1000千米所需的時光,已知每種交通對象的參數都為3個整數A、B、C的表達式。現有兩種對象:Car和Plane,個中Car的速度運算公式為:A+B+C。須要編寫三個類:ComputeTime.java,Palne.java,Car.java和接口Common.java。請求在將來假如增長第3中交通對象的時刻,不用修正 之前的任何法式,只須要寫新的交通對象的法式。其運轉進程以下:
從敕令行輸出ComputeTime的四個參數,第一個是交通對象的類型,第2、3、四個參數分離是整數A、B、C。舉例以下:
盤算Plane的時光:“Plane 20 30 40”
盤算Car的時光:"Car 23 34 45"
假如第3中交通對象為Ship,則須要編寫Ship.java,運轉時輸出:"Ship 22 33 44"
提醒:充足應用接口的概念,接口對象充任參數。
實例化一個對象的別的一中方法:Class.forName(str).newInstance();例如須要實例化
一個Plane對象的話,則只需挪用Class.forName("Plane").newInstance()即可。
代碼:
1. ComputTime. java 請確保輸出准確,個中沒有捕獲NumberFromatException
import CalTime.vehicle.all.Common; import java .lang.*; public class ComputeTime { public static void main(String args[]) { System.out.println(“交通對象: “+args[0]); System.out.println(” 參數A: “+args[1]); System.out.println(” 參數B: “+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]); double v,t; try { Common d=(Common) Class.forName(“CalTime.vehicle.”+args[0]).newInstance(); v=d.runTimer(A,B,C); t=1000/v; System.out.println(“均勻速度: “+v+” km/h”); System.out.println(“運轉時光:”+t+” 小時”); } catch(Exception e) { System.out.println(“class not found”); } } }
2.Plane.java
package CalTime.vehicle; import CalTime.vehicle.all.Common; public class Plane implements 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 class Car implements Common { public double runTimer(double a, double b, double c) { return ( a*b/c ); } }
4.Common.java
package CalTime.vehicle.all; public interface Common { double runTimer(double a, double b, double c); }
一次運轉成果:
C:\ java> java ComputeTime Car 100 45 67
交通對象: Car
參數A: 100
參數B: 45
參數C: 67
均勻速度: 67.16417910447761 km/h
運轉時光:14.88888888888889 小時
C:\ java > java ComputeTime Plane 130 45 67
交通對象: Plane
參數A: 130
參數B: 45
參數C: 67
均勻速度: 242.0 km/h
運轉時光:4.132231404958677 小時
該示例演示了接口的經典用法,Thinking in java對此也做出了深入的剖析,可以檢查下。
2.接口作為辦法的參數傳遞。
示例:
interface Extendbroadable{ public void inPut(); } class KeyBroad implements Extendbroadable{ public void inPut(){ System.out.println(“\n hi,keybroad has be input into then mainbroad!\n”); } } class NetCardBroad implements Extendbroadable{ public void inPut(){ System.out.println(“\n hi,netCardBroad has be input into then mainbroad!\n”); } } class CheckBroad{ public void getMainMessage(Extendbroadable ext){ ext.inPut(); } } public class InterfaceTest01{ public static void main(String []args){ KeyBroad kb=new KeyBroad(); NetCardBroad ncb=new NetCardBroad(); CheckBroad cb=new CheckBroad(); cb.getMainMessage(kb); cb.getMainMessage(ncb); } }
可以將接口類型的參數作為辦法參數,在現實應用時可以將完成了接口的類傳遞給辦法,前方法或依照重寫的准繩履行,現實挪用的是完成類中的辦法代碼體。如許便依據傳出去的參數的分歧而完成分歧的功效。
主要的是,當我今後須要別的一個對象而且具有本身的辦法體的時刻,我們不用改寫原類,只須要新的類完成接口便可。
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。