1、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()便可。
Java代码
import CalTime. vehicle. all. Common;
import java. lang. *;
public interface Common . . . {
double runTimer(double a, double b, double c);
}
public class Plane implements Common . . . {
public double runTimer(double a, double b, double c) . . . {
return (a+ b + c);
}
}
public class Car implements Common . . . {
public double runTimer(double a, double b, double c) . . . {
return ( a*b/c );
}
}
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、JAVA接口作为参数传递
可以将接口类型作为方法参数, 在使用时可以将实现了接口的类传递给方法,实际调用的是实现类中的方法代码体, 这样便根据传入的参数的不同而实现不同的功能。 重要的是, 当我当前需要另外一个对象并且拥有承受所声明的方法的时候, 我们不必须原类, 只需新的类实现接口即可。
Java代码
import java. lang. *;
interface Extendbroadable . . . {
public void inPut();
}
class KeyBroad implements Extendbroadable . . . {
public void inPut() . . . {
System. out. println(" hi, keybroad has be input into then mainbroad! ");
}
}
class NetCardBroad implements Extendbroadable . . . {
public void inPut() . . . {
System. out. println(" hi, netCardBroad has be input into then mainbroad! ");
}
}
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);
}
}
很多人都说接口是JAVA类多继承的实现,但我个人它的微妙之处还是多态的实现。