java接口使用方法 為某研究所編寫一個(gè)通用程序,,用來計(jì)算每一種交通工具運(yùn)行1000公里所需的時(shí)間,,已知每種交通工具的參數(shù)都是3個(gè)整數(shù)A、B,、C的表達(dá)式?,F(xiàn)有兩種工具:Car 和Plane,其中Car 的速度運(yùn)算公式為:A*B/C,,Plane 的速度運(yùn)算公式為:A+B+C,。需要編寫三類:ComputeTime.java,Plane.java,Car007.java和接口 Common.java,要求在未來如果增加第3種交通工具的時(shí)候,,不必修改以前的任何程序,,只需要編寫新的交通工具的程序。其運(yùn)行過程如下,,從命令行輸入ComputeTime的四個(gè)參數(shù),,第一個(gè)是交通工具的類型,第二,、三,、四個(gè)參數(shù)分別時(shí)整數(shù)A、B,、C,,舉例如下: 計(jì)算Plane的時(shí)間:'java ComputeTime Plane 20 30 40' 計(jì)算Car007的時(shí)間:'java ComputeTime Car007 23 34 45' 如果第3種交通工具為Ship,則只需要編寫Ship.java,運(yùn)行時(shí)輸入:'java ComputeTime Ship 22 33 44' 提示:充分利用接口的概念,,接口對(duì)象充當(dāng)參數(shù),。 實(shí)例化一個(gè)對(duì)象的另外一種辦法:Class.forName(str).newInstance();例如需要實(shí)例化一個(gè)Plane對(duì)象的話,,則只要調(diào)用Class.forName('Plane').newInstance()便可,。 解答代碼: 訪到classpath 路徑下即可,請(qǐng)從下往上編譯 目錄結(jié)構(gòu) CalTime --------|-------- | | | | vehicle ComputTime.java | --------- | | | | all Palne.java /Car.java | | Common.java 代碼如下: 1. ComputTime.java 請(qǐng)確保輸入正確,,其中沒有捕捉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(' 參數(shù)A: '+args[1]); System.out.println(' 參數(shù)B: '+args[2]); System.out.println(' 參數(shù)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('運(yùn)行時(shí)間:'+t+' 小時(shí)'); } 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); } 演示了接口的經(jīng)典使用方法,。嗬嗬,,只有意會(huì),不可言傳,。 Thinking in Java 對(duì)此也做出了深刻的分析,,可以查看下。 |
|