2015-java-第5章 接口与多态资料ppt课件

上传人:我*** 文档编号:148766017 上传时间:2020-10-22 格式:PPT 页数:98 大小:2.30MB
返回 下载 相关 举报
2015-java-第5章 接口与多态资料ppt课件_第1页
第1页 / 共98页
2015-java-第5章 接口与多态资料ppt课件_第2页
第2页 / 共98页
2015-java-第5章 接口与多态资料ppt课件_第3页
第3页 / 共98页
2015-java-第5章 接口与多态资料ppt课件_第4页
第4页 / 共98页
2015-java-第5章 接口与多态资料ppt课件_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《2015-java-第5章 接口与多态资料ppt课件》由会员分享,可在线阅读,更多相关《2015-java-第5章 接口与多态资料ppt课件(98页珍藏版)》请在金锄头文库上搜索。

1、第5章 接口与多态,Programming in JAVA,本课件以清华大学郑莉老师的课件为基础进行改编,2,目录,5.1 接口 5.2 塑型 5.3 多态的概念 5.4 多态的应用 5.5 构造方法与多态 5.6 内部类 5.7 本章小结,5.1 接口,接口的作用及定义 接口的实现 接口的扩展,4,5.1 接口,接口 接口是描述类的部分行为的一组操作(包括操作名、参数类型和返回值类型) ,用于定义多个不相关类的共同行为 接口的抽象程度比抽象类更进一步,其完全禁止了所有的函数定义。 也可以包含基本数据类型的数据成员,但它们都默认为static和final,5,保险公司的例子 具有车辆保险、人员

2、保险、公司保险等多种保险业务,各种业务的保险对象不同,但在对外提供服务方面具有相似性,如都需要计算保险费(premium)等,因此可声明一个Insurable 接口,并使不同的类实现这个接口 在UML图中,实现接口用带有空三角形的虚线表示,5.1.1 接口的作用及语法例5_1,接口,6,接口的语法 使用关键字interface声明接口 声明格式为 接口修饰符 interface 接口名称 extends 父接口名 /方法的原型声明或静态常量 接口的数据成员一定要赋初值,且此值将不能再更改,允许省略final关键字 接口中的方法必须是“抽象方法”,不能有方法体,允许省略public及abstra

3、ct关键字,5.1.1 接口的作用及语法,接口,7,例5.1中的Insurable 接口声明如下,可见其中的方法都是抽象方法 public interface Insurable public int getNumber(); public int getCoverageAmount(); public double calculatePremium(); public Date getExpiryDate(); ,5.1.1 接口的作用及语法 例5_1保险接口的声明,接口,8,声明一个接口Shape2D,可利用它来实现二维的几何形状类Circle和Rectangle 把计算面积的方法声明在接

4、口里 pi值是常量,把它声明在接口的数据成员里 interface Shape2D /声明Shape2D接口 final double pi=3.14; /数据成员一定要初始化 public abstract double area();/抽象方法 在接口的声明中,允许省略一些关键字,也可声明如下 interface Shape2D double pi=3.14; double area(); ,5.1.1 接口的作用及语法例5_2,接口,9,5.1.1 接口的作用及语法,接口的作用 是面向对象的一个重要机制 实现多继承,同时免除C+中的多继承那样的复杂性 建立类和类之间的“协议” 把类根据其

5、实现的功能来分别代表,而不必顾虑它所在的类继承层次;这样可以最大限度地利用动态绑定,隐藏实现细节 实现不同类之间的常量共享,接口,10,5.1.1 接口的作用及语法与抽象类的不同,抽象类描述的是本质上相同的类之间的共同行为,定义了一种继承关系;接口描述的是看上去不相关的类之间的共同行为,定义了一种契约关系(类要实现接口)。,接口,11,5.1.2 实现接口,接口的实现 接口中定义的操作需要由类来实现。必须和实现该接口的类联系起来,接口才有具体含义 使用implements关键字,语法如下 public class 类名称 implements 接口名 /* Bodies for the int

6、erface methods */ /* Own data and methods. */ 必须实现接口中的所有抽象方法 来自接口的方法必须声明成public 一个类可以实现多个接口,而一个接口也可以被多个类实现,实现方式可以各不一样,接口,12,实现接口Insurable,声明汽车类实现例5.1中的Insurable接口,实现接口中的所有抽象方法 public class Car implements Insurable public int getPolicyNumber() / write code here public double calculatePremium() / writ

7、e code here public Date getExpiryDate() / write code here public int getCoverageAmount() / write code here public int getMileage() /新添加的方法 /write code here ,5.1.2 实现接口 例5_3,接口,13,对象可以被转型为其所属类实现的接口类型 getPolicyNumber、calculatePremium是Insurable接口中声明的方法 getMileage是Car类新添加的方法,Insurable接口中没有声明此方法 Car jett

8、a = new Car(); Insurable item = (Insurable)jetta; /对象转型为接口类型 item.getPolicyNumber(); item.calculatePremium(); item.getMileage(); / 接口中没有声明此方法,不可以 jetta.getMileage(); / 类中有此方法,可以 (Car)item).getMileage(); / 转型回原类,可调用此方法了,5.1.2 实现接口 对象转型,接口,14,5.1.2 实现接口 例5_4,class Circle implements Shape2D double radi

9、us; public Circle(double r) radius=r; public double area() return (pi * radius * radius); ,class Rectangle implements Shape2D int width,height; public Rectangle(int w,int h) width=w; height=h; public double area() return (width * height); ,声明Circle与Rectangle两个类实现Shape2D接口,接口,PI,15,声明接口类型的变量,并用它来访问对象

10、 public class VariableTester public static void main(String args) Shape2D var1,var2; var1=new Rectangle(5,6); System.out.println(Area of var1 = + var1.area(); var2=new Circle(2.0); System.out.println(Area of var2 = + var2.area(); 输出结果 Area of var1 = 30.0 Area of var2 = 12.56,5.1.2 实现接口 例5_5,接口,16,Mo

11、vableObject接口定义了所有“可移动对象”能做的事情 public interface MovableObject public boolean start(); public void stop(); public boolean turn(int degrees); public double fuelRemaining(); public void changeSpeed(double kmPerHour); ,5.1.2 实现接口 MovableObject接口,接口,17,Plane、Car、 Train、 Boat 分别实现 MovableObject 接口 public

12、class Plane implements MovableObject public int seatCapacity; public Company owner; public DatelastRepairDate; /实现MovalbelObject接口的所有方法 public boolean start() /启动飞机,成功则返回true public void stop() /停止 public boolean turn(int degrees) /转向,成功则返回true public double fuelRemaining() /返回燃料剩余量 public void chan

13、geSpeed(double kmPerHour) /改变速度 /plane类自己的方法: public Date getLastRepairDate() /. public double calculateWindResistance() /. ,5.1.2 实现接口 MovableObject接口的实现,接口,18,为 MovableObjects安装遥控器(remote control) public class RemoteControl private MovableObjectmachine; RemoteControl(MovableObject m) machine = m;

14、/按下“启动”按钮: public void start() boolean okay = machine.start(); if (!okay) display(No Response on start); /. remoteControl 构造方法的形参类型为 MovableObject,它可以是Plane, Car, Train, Boat, 等等,5.1.2 实现接口 RemoteControl类,接口,Plane aPlane = new Plane(); RemoteControl control=new RemoteControl(aPlane); control.start()

15、;,19,5.1.3 多重继承,多重继承 Java的设计以简单实用为导向,不允许一个类有多个父类,接口,多重继承的问题:右图中ClassD该继承哪个类的fun方法?ClassB的还是ClassC的?,20,5.1.3 多重继承,多重继承 但允许一个类可以实现多个接口,通过这种机制可实现多重继承 一个类实现多个接口的语法如下 类修饰符 class 类名称 implements 接口1,接口2, ,接口,21,Car类可以实现接口Insurable,Drivable,Sellable public class Car implements Insurable, Drivable, Sellable

16、 . ,5.1.3 多重继承 Car的例子,接口,22,声明Circle类实现接口Shape2D和Color Shape2D具有pi与area()方法,用来计算面积 Color则具有setColor方法,可用来赋值颜色 通过实现这两个接口,Circle类得以同时拥有这两个接口的成员,达到了多重继承的目的 interface Shape2D /声明Shape2D接口 final double pi=3.14; /数据成员一定要初始化 public abstract double area(); /抽象方法 interface Color void setColor(String str); /抽象方法 ,5.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号