接口的概念其实并不难理解, 接口关键字Interface, 在使用时可以只定义函数体而不需求详细的实现。 再类的继承过程中可以实现多个接口而取代了类的多继承。 使用接口其实就有点像实现虚函数的调用一样, 用继承接口的子类实例化声名得借口就可以经过接口调用子类外部接口定义的函数。
使用这种接口方式编程, 如果业务逻辑发生变化需求新增类多办法, 就可以再不改动原来已经写好的代码基础上新增一个类来实现接口中定义的函数来实现。 详细办法请看下面两个例子:
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接口的介绍,能够帮助到你。