程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> JAVA的多態、接口、動態加載類等

JAVA的多態、接口、動態加載類等

編輯:關於JAVA

為某研究所編寫一個通用程序,用來計算每一種交通工具運行1000公裡所需的時間,已知每種交通工具的參數都是3個整數A、B、C的表達式。現有兩種工具:Car和Plane,其中Car的速度運算公式為:A*B/C,Plane的速度運算公式為:A+B+C。需要編寫三類:ComputeTime.java,Plane.java,Car007.java和接口Common.java,要求在未來如果增加第3種交通工具的時候,不必修改以前的任何程序,只需要編寫新的交通工具的程序。其運行過程如下,從命令行輸入ComputeTime的四個參數,第一個是交通工具的類型,第二、三、四個參數分別時整數A、B、C,舉例如下:

計算Plane的時間:"java ComputeTime Plane 20 30 40"

計算Car007的時間:"java ComputeTime Car007 23 34 45"

如果第3種交通工具為Ship,則只需要編寫Ship.java,運行時輸入:"java ComputeTime Ship 22 33 44"

提示:充分利用接口的概念,接口對象充當參數。

實例化一個對象的另外一種辦法:Class.forName(str).newInstance();例如需要實例化一個Plane對象的話,則只要調用Class.forName("Plane").newInstance()便可。

解答代碼:

訪到classpath路徑下即可,請從下往上編譯 

目錄結構
CalTime
--------|--------
  |        |
  |        |
vehicle    ComputTime.java
  |
---------
|   |
|   |
all Palne.java/Car.java
|
|

Common.java

代碼如下:

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);
}

演示了接口的經典使用方法。嗬嗬,只有意會,不可言傳。ThinkinginJava對此也做出了深刻的分析,可以查看下。

注*源自清華大學JAVA課件

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved