java语言程序设计-第5章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《java语言程序设计-第5章.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 语言程序设计
- 资源描述:
-
1、1第第5章章 接口与多态接口与多态Programming in JAVA07信管JAVA语言程序设计2目录目录l5.1 接口接口l5.2 塑型塑型l5.3 多态的概念多态的概念l5.4 多态的应用多态的应用l5.5 构造方法与多态构造方法与多态l5.6 内部类内部类l5.7 本章小结本章小结07信管JAVA语言程序设计35.1 接口接口l接口接口 与抽象类一样定义多个类的共同属性与方法.接口中的方法都是抽象方法,仅给出方法的声明,不给出具体实现。具体实现由其实现类(对于抽象类来说是子类)来完成。接口中的属性必须为常量,前面为final修饰符07信管JAVA语言程序设计4l接口的语法接口的语法
2、声明格式为interface 接口名称/属性常量/抽象方法5.1.1 接口的声明接口的声明接口07信管JAVA语言程序设计5l声明一个接口声明一个接口Shape2D,实现类为实现类为Circle和和Rectangle 把计算面积的方法声明在接口里 pi值是常量,把它声明在接口的数据成员里interface Shape2D /声明Shape2D接口 final double pi=3.14;/数据成员一定要初始化 public abstract double area();/抽象方法 在接口的声明中,允许省略一些关键字,也可声明如下(,省略抽象)interface Shape2D double
3、pi=3.14;/省略常量的final修饰 double area();/省略抽象方法的public abstract修饰 5.1.1 接口的声明接口的声明例例5_2接口07信管JAVA语言程序设计65.1.2 实现接口实现接口l接口的实现接口的实现不能使用new直接创建接口的对象。其它类使用implements关键字实现接口,本质是实现接口的抽象方法。语法如下public class 类名称 implements 接口名 抽象方法头部 方法的具体实现 接口07信管JAVA语言程序设计75.1.2 实现接口实现接口 例例5_4class Circle implements Shape2D do
4、uble radius;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);l声明声明Circle与与Rectangle两个类实现两个类实现Shape2D接口接口接口07信管JAVA语言程序设计8l测试类测试类publi
5、c class InterfaceTester public static void main(String args)Rectangle rect=new Rectangle(5,6);System.out.println(Area of rect=+rect.area();Circle cir=new Circle(2.0);System.out.println(Area of cir=+cir.area();l运行结果运行结果Area of rect=30.0Area of cir=12.565.1.2 实现接口实现接口 例例5_4运行结果运行结果接口07信管JAVA语言程序设计9l声明
6、接口类型的变量,并用它来访问对象声明接口类型的变量,并用它来访问对象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();l输出结果输出结果Area of var1=
7、30.0Area of var2=12.565.1.2 实现接口实现接口 例例5_5接口07信管JAVA语言程序设计105.1.3 接口的作用接口的作用l接口的作用接口的作用 封装相关或不相关类之间的共同属性和方法。实现多继承。接口07信管JAVA语言程序设计11l保险公司的例子(不相关类)保险公司的例子(不相关类)具有车辆保险、人员保险、公司保险等多种保险业务,在对外提供服务方面具有相似性,如都需要计算保险费(premium)等,因此可声明一个Insurable 接口 在UML图中,实现接口用带有空三角形的虚线表示5.1.3 接口的作用接口的作用例例5_1InsurableCompanyPe
8、rsonCar接口07信管JAVA语言程序设计125.1.3 接口的作用接口的作用-多重继承多重继承l多重继承多重继承 一个类只能有一个父类,但允许一个类可以实现多个接口,通过这种机制可实现多重继承。一个类实现多个接口的语法如下类修饰符 class 类名称 implements 接口1,接口2,接口07信管JAVA语言程序设计13l声明声明Circle类实现接口类实现接口Shape2D和和Color Shape2D具有pi与area()方法,用来计算面积 Color则具有setColor方法,可用来赋值颜色 通过实现这两个接口,Circle类得以同时拥有这两个接口的成员,达到了多重继承的目的i
9、nterface Shape2D /声明Shape2D接口 final double pi=3.14;/数据成员一定要初始化 public abstract double area();/抽象方法interface Color void setColor(String str);/抽象方法5.1.3 接口的作用接口的作用-多重继承多重继承 例例5_6接口07信管JAVA语言程序设计14class Circle implements Shape2D,Color /实现Circle类 double radius;String color;public Circle(double r)/构造方法 r
10、adius=r;public double area()/定义area()的处理方式 return(pi*radius*radius);public void setColor(String str)/定义setColor()的处理方式 color=str;System.out.println(color=+color);接口5.1.3 接口的作用接口的作用-多重继承多重继承 例例5_607信管JAVA语言程序设计15l测试类测试类public class MultiInterfaceTester public static void main(String args)Circle cir;c
11、ir=new Circle(2.0);cir.setColor(blue);System.out.println(Area=+cir.area();l输出结果输出结果color=blueArea=12.56接口5.1.3 接口的作用接口的作用-多重继承多重继承例例5_6运行结果运行结果07信管JAVA语言程序设计165.1.4 接口的继承(扩展)接口的继承(扩展)l接口的继承接口的继承 子接口继承父接口。接口继承的语法,支持多重继承interface 子接口extends 父接口1,父接口2,实现接口的类也必须实现此接口的父接口接口07信管JAVA语言程序设计17lShape是父接口,是父接口
12、,Shape2D与与Shape3D是其子接是其子接口。口。Circle类及类及Rectangle类实现接口类实现接口Shape2D,而而Box类及类及Sphere类实现接口类实现接口Shape3D 5.1.4 接口的扩展接口的扩展 例例5_7Shape接口接口Shape2D接口接口Shape3D接口接口Sphere类类Box类类Rectangle类类Circle类类接口07信管JAVA语言程序设计18l部分代码如下部分代码如下/声明Shape接口interface Shape double pi=3.14;void setColor(String str);/声明Shape2D接口扩展了Sha
13、pe接口interface Shape2D extends Shape double area();5.1.4 接口的扩展接口的扩展 例例5_7接口07信管JAVA语言程序设计19class Circle implements Shape2D double radius;String color;public Circle(double r)radius=r;public double area()return(pi*radius*radius);public void setColor(String str)color=str;System.out.println(color=+color)
14、;public class ExtendsInterfaceTester /测试类 public static void main(String args)Circle cir;cir=new Circle(2.0);cir.setColor(blue);System.out.println(Area=+cir.area();5.1.4 接口的扩展接口的扩展 例例5_7接口07信管JAVA语言程序设计20l运行结果运行结果color=blueArea=12.56l说明说明 首先声明了父接口Shape,然后声明其子接口Shape2D 之后声明类Circle实现Shape2D子接口,因而在此类内必
15、须明确定义setColor()与area()方法的处理方式 最后在主类中我们声明了Circle类型的变量cir并创建新的对象,最后通过cir对象调用setColor()与area()方法5.1.4 接口的扩展接口的扩展 例例5_7运行结果运行结果接口07信管JAVA语言程序设计215.2 塑型塑型l塑型塑型(type-casting)type-casting)又称为类型转换方式l隐式(自动)的类型转换l显式(强制)的类型转换07信管JAVA语言程序设计225.2.1 塑型的概念塑型的概念l塑型的对象包括塑型的对象包括基本数据类型l将值从一种形式转换成另一种形式对象l只能被塑型为父类类型对象所属
16、的类实现的接口被塑型为父类或接口后,再被塑型回其本身塑型07信管JAVA语言程序设计23lManager对象对象 可以被塑型为Employee、Person、Object或Insurable,不能被塑型为Customer、Company或Car ObjectPersonEmployeeCustomerManagerCompanyCarInsurable5.2.1 塑型的概念塑型的概念 一个例子一个例子塑型07信管JAVA语言程序设计24l基本数据类型基本数据类型 相容类型之间存储容量低的自动向存储容量高的类型转换l对象对象 被塑型成父类Employee emp;emp=new Manager(
17、);/将Manage对象塑型为Employee对象 被塑型为所实现的接口类型Car jetta=new Car();Insurable item=jetta;5.2.1 塑型的概念塑型的概念 隐式隐式(自动自动)的类型转换的类型转换塑型07信管JAVA语言程序设计255.2.1 塑型的概念塑型的概念 显式显式(强制强制)的类型转换的类型转换l基本数据类型基本数据类型(int)871.34354;/结果为 871(char)65;/结果为A(long)453;/结果为453Ll对象对象(还原功能还原功能)Employee emp;Manager man;emp=new Manager();man
18、=(Manager)emp;/将emp强制塑型为本来的类型塑型07信管JAVA语言程序设计265.2.2 塑型的应用塑型的应用l塑型应用的场合包括塑型应用的场合包括赋值转换l赋值号右边的表达式类型或对象转换为左边的类型方法调用转换l实参的类型转换为形参的类型算数表达式转换l算数混合运算时,不同类型的项转换为相同的类型再进行运算字符串转换l字符串连接运算时,如果一个操作数为字符串,一个操作数为数值型,则会自动将数值型转换为字符串 塑型07信管JAVA语言程序设计27l当一个类对象被塑型为其父类后,它提供的方法当一个类对象被塑型为其父类后,它提供的方法会减少会减少 当Manager对象被塑型为Em
19、ployee之后,它只能接收getName()及getEmployeeNumber()方法,不能接收getSalary()方法 将其塑型为本来的类型后,又能接收getSalary()方法了5.2.2 塑型的应用塑型的应用塑型07信管JAVA语言程序设计285.2.3 方法的查找方法的查找l如果在塑型前和塑型后的类中都提供如果在塑型前和塑型后的类中都提供了相同的方法,如果将此方法发送给了相同的方法,如果将此方法发送给塑型后的对象,那么系统将会调用哪塑型后的对象,那么系统将会调用哪一个类中的方法一个类中的方法?实例方法的查找 类方法的查找塑型07信管JAVA语言程序设计29l从对象创建时的类开始,
20、沿类层次向上查从对象创建时的类开始,沿类层次向上查找找 Manager manManager man=new Manager();=new Manager();Employee emp1Employee emp1=new Employee();=new Employee();Employee emp2Employee emp2=(Employee)man;=(Employee)man;emp1emp1putePay();putePay();/调用调用EmployeeEmployee类中的类中的computePay()computePay()方法方法 manmanputePay();putePa
21、y();/调用调用ManagerManager类中的类中的computePay()computePay()方法方法 emp2emp2putePay();putePay();/调用调用ManagerManager类中的类中的computePay()computePay()方法方法 5.2.3 方法的查找方法的查找 实例方法的查找实例方法的查找塑型07信管JAVA语言程序设计30l总是在引用变量声明时所属的类中进行查总是在引用变量声明时所属的类中进行查找找 Manager manManager man=new Manager();=new Manager();Employee emp1Employ
22、ee emp1=new Employee();=new Employee();Employee emp2Employee emp2=(Employee)man;=(Employee)man;manman.expenseAllowance();/in Manager.expenseAllowance();/in Manager emp1emp1.expenseAllowance();/in Employee.expenseAllowance();/in Employee emp2emp2.expenseAllowance();/in Employee!.expenseAllowance();/i
展开阅读全文