如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第5章接口与多态目录5.1接口5.1.1接口的作用及语法接口允许我们在看起来不相干的对象之间定义共同行为保险公司的例子具有车辆保险、人员保险、公司保险等多种保险业务,在对外提供服务方面具有相似性,如都需要计算保险费(premium)等,因此可声明一个Insurable接口在UML图中,实现接口用带有空三角形的虚线表示接口的语法声明格式为[接口修饰符]interface接口名称[extends父接口名]{…//方法的原型声明或静态常量}接口的数据成员一定要赋初值,且此值将不能再更改,允许省略final关键字接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstract关键字例5.1中的Insurable接口声明如下,可见其中的方法都是抽象方法publicinterfaceInsurable{publicintgetNumber();publicintgetCoverageAmount();publicdoublecalculatePremium();publicDategetExpiryDate();}声明一个接口Shape2D,可利用它来实现二维的几何形状类Circle和Rectangle把计算面积的方法声明在接口里pi值是常量,把它声明在接口的数据成员里interfaceShape2D{//声明Shape2D接口finaldoublepi=3.14;//数据成员一定要初始化publicabstractdoublearea();//抽象方法}在接口的声明中,允许省略一些关键字,也可声明如下interfaceShape2D{doublepi=3.14;doublearea();}5.1.2实现接口实现接口Insurable,声明汽车类实现例5.1中的Insurable接口,实现接口中的所有抽象方法publicclassCarimplementsInsurable{publicintgetPolicyNumber(){//writecodehere}publicdoublecalculatePremium(){//writecodehere}publicDategetExpiryDate(){//writecodehere}publicintgetCoverageAmount(){//writecodehere}publicintgetMileage(){//新添加的方法//writecodehere}}对象可以被转型为其所属类实现的接口类型getPolicyNumber、calculatePremium是Insurable接口中声明的方法getMileage是Car类新添加的方法,Insurable接口中没有声明此方法Carjetta=newCar();Insurableitem=(Insurable)jetta;//对象转型为接口类型item.getPolicyNumber();item.calculatePremium();item.getMileage();//接口中没有声明此方法,不可以jetta.getMileage();//类中有此方法,可以((Car)item).getMileage();//转型回原类,可调用此方法了5.1.2实现接口——例5_4测试类publicclassInterfaceTester{publicstaticvoidmain(Stringargs[]){Rectanglerect=newRectangle(5,6);System.out.println("Areaofrect="+rect.area());Circlecir=newCircle(2.0);System.out.println("Areaofcir="+cir.area());}}运行结果Areaofrect=30.0Areaofcir=12.56声明接口类型的变量,并用它来访问对象publicclassVariableTester{publicstaticvoidmain(String[]args){Shape2Dvar1,var2;var1=newRectangle(5,6);System.out.println("Areaofvar1="+var1.area());var2=newCircle(2.0);System.out.println("Areaofvar2="+var2.area());}}输出结果Areaofvar1=30.0Areaofvar2=12.56MovableObject接口定义了所有“可