欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Java程序设计课件Java程序设计 (5).pdf

    • 资源ID:52870248       资源大小:1.55MB        全文页数:83页
    • 资源格式: PDF        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java程序设计课件Java程序设计 (5).pdf

    Java语言程序设计(第2版)第 4 章 接口与多态BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMC+语言程序设计(第4版),郑莉,清华大学清华大学 郑莉JAVA语言程序设计(讲课提示,不显示)2BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学3目录 4.1 接口 4.2 类型转换 4.3 多态的概念 4.4 多态的应用 4.5 构造方法与多态BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学接口(文字显示)(以下文字不显示)就像“纯”的抽象类,只有设计、没有实现;可以同时继承多个设计;可以在没有继承、组合关系的类之间抽象出共同接口;可以隐藏实现细节。4BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类型转换(文字显示)(以下文字不显示)继承超类和实现接口的目的不仅在于重用设计和实现,而且可以规定不同类的对象有统一的对外服务接口。从提供同样服务接口的角度 子类对象可以充当超类的对象;实现接口类的对象可以通过接口类型的引用访问。5BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学多态性(文字显示)(以下文字不显示)超类和接口中设计的对外服务功能,在不同的子类或实现接口的类中可以有不同的实现,但是可以通过超类的引用或者接口的引用访问。6BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMC+语言程序设计(第4版),郑莉,清华大学清华大学 郑莉JAVA语言程序设计(讲课提示,不显示)7BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学接口 可以看做是一个“纯”抽象类,它只提供一种形式,并不提供实现8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学接口 接口中可以规定方法的原型:方法名、参数列表以及返回类型,但不规定方法主体;也可以包含基本数据类型的数据成员,但它们都默认为static和final。9BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学10接口的作用 是面向对象的一个重要机制BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学11接口的作用 继承多个设计。建立类和类之间的“协议”将类根据其实现的功能分组用接口代表,而不必顾虑它所在的类继承层次;这样可以最大限度地利用动态绑定,隐藏实现细节;实现不同类之间的常量共享。BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学接口允许我们在看起来不相干的对象之间定义共同行为(此行文字不显示)12ObjectFoodWeatherComponentFruitVegetableCloudRainSnowEdiblefeedTo(aPerson)BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学接口的语法 声明格式为接口修饰符 interface 接口名称 extends 父接口名/方法的原型声明或静态常量 接口的数据成员一定要有初值,且此值将不能再更改,可以省略final关键字。接口中的方法必须是“抽象方法”,不能有方法体,可以省略public及abstract关键字。13BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:接口声明 声明一个接口Shape2D,包括和计算面积的方法原型interface Shape2D/声明Shape2D接口final double pi=3.14;/数据成员一定要初始化public abstract double area();/抽象方法 在接口的声明中,允许省略一些关键字,也可声明如下interface Shape2D double pi=3.14;double area();BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学实现接口 不能用new运算符直接产生接口对象;15BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学实现接口 利用接口设计类的过程,称为接口的实现,使用implements关键字,语法如下:public class 类名称 implements 接口名称 /在类体中实现接口的方法/本类声明的更多变量和方法注意:必须实现接口中的所有方法;来自接口的方法必须声明成public。16BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:实现接口Shape2Dclass Circle implements Shape2Ddouble radius;public Circle(double r)radius=r;public double area()return(pi*radius*radius);class Rectangle implements Shape2Dint width,height;public Rectangle(int w,int h)width=w;height=h;public double area()return(width*height);BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:实现接口Shape2D 测试类public 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();运行结果Area of rect=30.0Area of cir=12.56BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:接口类型的引用变量 声明接口类型的变量,并用它来访问对象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.0Area of var2=12.56BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学实现多个接口的语法20BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学实现多个接口的语法 Java不允许一个类有多个超类(这一行不显示)一个类可以实现多个接口,通过这种机制可实现对设计的多重继承。实现多个接口的语法如下类修饰符 class 类名称 implements 接口1,接口2,21BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:通过实现接口达到多重继乘 声明Circle类实现接口Shape2D和Color Shape2D具有常量pi与area()方法,用来计算面积;Color则具有setColor方法,可用来赋值颜色;通过实现这两个接口,Circle类得以同时拥有这两个接口的成员,达到了对设计进行多重继承的目的。interface Shape2D /声明Shape2D接口final double pi=3.14;/数据成员一定要初始化public abstract double area();/抽象方法interface Colorvoid setColor(String str);/抽象方法BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:通过实现接口达到多重继乘class Circle implements Shape2D,Color /实现Circle类double radius;String color;public Circle(double r)/构造方法radius=r;public double area()/定义area()的处理方式return(pi*radius*radius);public void setColor(String str)/定义setColor()的处理方式color=str;System.out.println(color=+color);BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:通过实现接口达到多重继乘 测试类public class MultiInterfaceTesterpublic static void main(String args)Circle cir;cir=new Circle(2.0);cir.setColor(blue);System.out.println(Area=+cir.area();输出结果color=blueArea=12.56BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学接口的扩展 接口可通过扩展的技术派生出新的接口 原来的接口称为超接口(super interface);派生出的接口称为子接口(sub interface)。25BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学接口的扩展 实现一个接口的类也必须实现其超接口。接口扩展的语法interface 子接口的名称 extends 超口的名称1,超接口的名称2,26BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学 Shape是超接口,Shape2D与Shape3D是其子接口。Circle类及Rectangle类实现接口Shape2D,而Box类及Sphere类实现接口Shape3D(此行文字不显示)27Shape接口接口Shape2D接口接口Shape3D接口接口Sphere类类Box类类Rectangle类类Circle类类BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:接口的扩展 部分代码如下/声明Shape接口interface Shape double pi=3.14;void setColor(String str);/声明Shape2D接口扩展了Shape接口interface Shape2D extends Shape double area();BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:接口的扩展class 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);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();BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM例:接口的扩展 运行结果color=blueArea=12.56 说明首先声明了父接口Shape,然后声明其子接口Shape2D;之后声明类Circle实现Shape2D子接口,因而在此类内必须明确定义setColor()与area()方法的处理方式;最后在主类中我们声明了Circle类型的变量cir并创建新的对象,最后通过cir对象调用setColor()与area()方法。BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学结语 这一节介绍了接口的概念和作用、声明和实现接口的语法,以及接口的扩展31BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMC+语言程序设计(第4版),郑莉,清华大学清华大学 郑莉JAVA语言程序设计(讲课提示,不显示)32BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类型转换的概念 又称为塑型(type-casting)。转换方式 隐式的类型转换;显式的类型转换。转换方向 向上转型;向下转型。33BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类型转换规则 基本类型之间的转换 将值从一种类型转换成另一种类型。引用变量的类型转换 将引用转换为另一类型的引用,并不改变对象本身的类型。只能被转为 任何一个(直接或间接)超类的类型(向上转型);对象所属的类(或其超类)实现的一个接口(向上转型);被转为引用指向的对象的类型(唯一可以向下转型的情况)。当一个引用被转为其超类引用后,通过他能够访问的只有在超类中声明过的方法。34BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类型转换举例 Manager对象 可以被塑型为Employee、Person、Object或Insurable,不能被塑型为Customer、Company或Car35ObjectPersonEmployeeCustomerManagerCompanyCarInsurableBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学隐式类型转换36BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学隐式类型转换 基本数据类型 可以转换的类型之间,存储容量低的自动向存储容量高的类型转换。引用变量 被转成更一般的类,例如:Employee emp;emp=new Manager();/将Manager类型的对象直接赋给/Employee类的引用变量,系统会/自动将Manage对象塑型为Employee类 被塑型为对象所属类实现的接口类型,例如:Car jetta=new Car();Insurable item=jetta;37BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学显式类型转换 基本数据类型(int)871.34354;/结果为 871(char)65;/结果为A(long)453;/结果为453L 引用变量Employee emp;Manager man;emp=new Manager();man=(Manager)emp;/将emp显式转换为它指向的对象的类型38BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类型转换的主要应用场合 赋值转换 方法调用转换 算术表达式转换 字符串转换39BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类型转换的主要应用场合 赋值转换 赋值运算符右边的表达式或对象类型转换为左边的类型;方法调用转换 实参的类型转换为形参的类型;算术表达式转换 算数混合运算时,不同类型的操作数转换为相同的类型再进行运算;字符串转换 字符串连接运算时,如果一个操作数为字符串,另一个操作数为其他类型,则会自动将其他类型转换为字符串。40BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类型转换的应用举例41BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类型转换的应用举例(以下文字不显示,只显示图,图重画一下不要蓝色底色)当Manager对象被塑型为Employee之后,它只能接收getName()及getEmployeeNumber()方法(都是在其直接或间接超类中声明过的方法),不能接收getSalary()方法(Manager类中声明的方法);将其塑型为本来的类型后,又能接收getSalary()方法了。42BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMC+语言程序设计(第4版),郑莉,清华大学清华大学 郑莉JAVA语言程序设计(讲课提示,不显示)43BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学方法的查找 如果在塑型前和塑型后的类中都提供了相同原型的方法,如果将此方法发送给塑型后的对象,那么系统将会调用哪一个类中的方法?44BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学方法的查找 实例方法的查找 类方法的查找45BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学实例方法的查找 从对象创建时的类开始,沿类层次向上查找。46ManagerManagermanman=new Manager();=new Manager();EmployeeEmployee emp1emp1=new Employee();=new Employee();EmployeeEmployee emp2emp2=(Employee)man;=(Employee)man;putePay();.computePay();/调用调用EmployeeEmployee类中的类中的computePaycomputePay()()方法方法putePputePay();();/调用调用ManagerManager类中的类中的computePaycomputePay()()方法方法putePay();.computePay();/调用调用ManagerManager类中的类中的computePaycomputePay()()方法方法ObjectPersonEmpioyeeManaerComputepay()Computepay()BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMJava语言程序设计(第2版),郑莉,清华大学类方法的查找 总是在引用变量声明时所属的类中进行查找。47Manager manManager man=new Manager();=new Manager();Employee emp1Employee emp1=new Employee();=new Employee();Employee emp2Employee emp2=(Employee)man;=(Employee)man;manman.expenseAllowance.expenseAllowance();/in Manager();/in Manager emp1emp1.expenseAllowance();/in Employee.expenseAllowance();/in Employee emp2emp2.expenseAllowance();/in Employee!.expenseAllowance();/in Employee!ObjectPersonEmpioyeeManagerStaticexpenseAllowance()StaticexpenseAllowance()BBBBBBBBB

    注意事项

    本文(Java程序设计课件Java程序设计 (5).pdf)为本站会员(刘静)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开