今天和同事好好的讨论了下接口的原理和作用,发现原来自己的对接口的理解仅仅是局限在概念的高度抽象上,觉得好像理解了但是不会变化应用其实和没有理解差不多。以前看一个帖子说学习一个东西不管什么时候都要带着“这个东西是什么?”、“这个东西有什么作用?”和“这个东西怎样用?”三个问题,这三个问题回答上来了说明你对这个事物的理解达到了一定的高度。
今天还有一个比较深的经验是要学习到知识就要多和人交流。就像以前某个管理人员说得“要疯狂的交流”。
现在对于今天学到的接口部分做一个详细地总结:
接口的概念其实并不难理解,接口关键字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()便可。
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接口作为参数传递
可以将借口类型的参数作为方法参数,在实际是使用时可以将实现了接口的类传递给方法,后方法或按照重写的原则执行,实际调用的是实现类中的方法代码体,这样便根据传进屋的参数的不同而实现不同的功能。重要的是,当我以后徐要林外一个对象并且拥有接受说生命的方法的时候的时候,我们不必须原类,只需新的类实现借口即可。
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);
}
}
分享到:
相关推荐
buct计算机系统综合设计课设
"半桥LLC谐振变换器:开环、闭环仿真设计与参数详解报告——含32页说明文档与Simulink模型",半桥LLC谐振变器开环+闭环仿真设计资料 附带一份32页配套说明文档详细参数设计、原理说明、仿真分析 开环、闭环、闭环+软启动三个Simulink仿真模型, 附带了配套设计说明报告,给出了谐振槽谐振元件参数的设计步骤,并对参数进行了完整设计。 可以参考说明文档设计不同功率等级的LLC谐振变器 ,半桥LLC谐振变换器; 开环仿真设计; 闭环仿真设计; 软启动仿真模型; 设计说明报告; 谐振槽谐振元件参数设计步骤。,"LLC谐振变换器:开环闭环仿真设计资料及详细参数说明"
证书_00008030-001079D21A53402E.zip
深入探索Comsol SOFC:固体氧化物燃料电池的仿真与性能分析(涉及温度场、气体分布及曲线表现),Comsol sofc固体氧化物燃料电池仿真(温度场分布,气体分布,极化曲线,性能曲线) ,Comsol; SOFC; 固体氧化物燃料电池; 仿真; 温度场分布; 气体分布; 极化曲线; 性能曲线,Comsol SOFC仿真:温度场与气体分布分析的极化性能曲线
学生竞赛管理系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
deepseek最新技术文档中英文对照版
COMSOL模拟下的激光热致等离子体作用模型探究,Comsol模拟激光热致等离子体模型 ,Comsol模拟; 激光热致等离子体模型; 模型模拟。,Comsol模拟激光热等离子体模型
冲压成形虚拟仿 真实验系统构建与关键技术研究.pdf
Firefox浏览器page_assist-1.4.4离线插件,deepseep大模型一起用的WEBUI插件
《基于Comsol仿真的热光伏电池(TPV)研究》,comsol仿真:热光伏电池(TPV) #comsol仿真 ,comsol仿真;热光伏电池(TPV);光伏模拟,"Comsol仿真技术在热光伏电池(TPV)领域的应用"
"COMSOL有限元仿真模型:三相变压器多物理耦合模型中的电磁-声-结构力分析,涉及应力、磁密及声场多维研究",COMSOL有限元仿真模型,三相变压器电磁-声-结构力多物理耦合模型,应力分析,磁密分析,声场分析 ,核心关键词:COMSOL有限元仿真模型; 三相变压器; 电磁-声-结构力多物理耦合模型; 应力分析; 磁密分析; 声场分析; 关键词以分号分隔为:COMSOL有限元仿真模型;三相变压器;电磁耦合模型;声-结构力耦合模型;应力分析;磁密分析;声场分析。,有限元模型下的电磁-声-结构多物理耦合仿真研究
"灰狼算法驱动的MPPT跟踪:光照突变情况下的部分遮阴处理与波形图分析",灰狼算法实现部分遮阴的MPPT跟踪,包括光照突变情况,包括灰狼算法程序和matlab simulink模型的搭建,功率,电压,电流波形图和占空比波形图入如下。 ,核心关键词:灰狼算法; MPPT跟踪; 光照突变; 程序实现; MATLAB Simulink模型; 功率波形图; 电压波形图; 电流波形图; 占空比波形图。,灰狼算法MPPT跟踪与Simulink模型搭建
"BLDC无刷直流电机双闭环矢量控制仿真研究与实践:模型构建、性能验证与学习资源",BLDC无刷直流电机双闭环矢量控制仿真 仿真为BLDC无刷直流电机的双闭环控制,仿真配套的说明文档详细的描述的每个模块的搭建以及作用。 适合学习BLDC的同学使用学习。 仿真通过对给定转速的突变验证双闭环控制的性能,结果表明,控制相应速度快,转速跟踪稳定,能完美实现功能。 文件包括: [1]仿真模型 [2]详细说明文档 [3]相关参考文献 ,BLDC无刷直流电机;双闭环矢量控制;仿真;模块搭建;性能验证;学习;控制响应速度;转速跟踪稳定。,"BLDC无刷直流电机双闭环矢量控制仿真研究报告"
EB-PVD设备灯丝加热电源的研制.pdf
国外人形机器人技术前沿及产业发展形势研判.pdf
基于comsol技术的冻土路基水热耦合研究,comsol冻土路基水热耦合。 ,comsol; 冻土; 路基; 水热耦合,"水热耦合下的comsol冻土路基研究"
COMSOL模拟光子晶体六边形晶格结构:第一布里渊区能带简述,COMSOL光子晶体六边形晶格简约第一布里渊区能带 ,COMSOL;光子晶体;六边形晶格;简约;第一布里渊区;能带,光子晶体六边形晶格的能带研究
基于英飞凌XMC4500的永磁伺服电机液压伺服驱动器方案——高效稳定的注塑机控制解决方案,液压伺服驱动器,英飞凌XMC4500方案,为永磁伺服电机(PMSM)而开发的液压伺服方案,采用高性能的矢量控制技术,配置了针对注塑机驱动过程中的工艺过程动作特性的优化,如注塑速度、压力保持精度控制,以及与注塑机控制器配合工作时的平稳性控制,同时还具备后台软件监控、通讯总线功能,支持多种编码器类型,组合功能丰富强大,性能稳定。 此方案主要应用于塑料成型、管材挤出、制鞋、橡胶、金属压铸等行业,油压控制性能进一步提升、压力和速度响应更快,稳态压力波动更小,体积更小。 驱动板、键盘板、PG卡等)源文件,资料非常详细完整 ,液压伺服驱动器; 英飞凌XMC4500方案; 永磁伺服电机PMSM; 矢量控制技术; 注塑机驱动工艺; 速度压力控制; 通讯总线功能; 编码器类型; 塑料成型; 管材挤出; 制鞋; 橡胶; 金属压铸; 油压控制性能; 体积小。,"英飞凌XMC4500永磁伺服液压驱动方案:多行业应用的高效稳定驱动器"
基于高频方波电压注入的IPMSM无感控制算法Simulink仿真模型研究与实践应用,基于高频方波电压注入零低速IPMSM无感控制算法simulink仿真模型 ①在估计的d轴注入高频方波电压来估计转子位置,具有较高的稳态精度和动态性能。 该仿真调试效果不错,曾应用到实际电机中去。 ②阐述了 IPMSM 的 MTPA 控制原理,并在此基础上研究了 IPMSM 基于 高频方波电压信号注入法的无位置传感器控制算法。 仿真结果表明基于高频方波 电压信号注入的无位置传感器控制方法具有不错的动静态性能 ,核心关键词: 1. 高频方波电压注入 2. 零低速IPMSM无感控制算法 3. Simulink仿真模型 4. 转子位置估计 5. MTPA控制原理 6. 动态性能 7. 稳态精度 8. 无位置传感器控制方法,基于高频方波电压注入的IPMSM无感控制算法Simulink仿真模型及效果分析
基于代理的跨站脚本攻击防御研究.pdf