版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习目标掌握对象转型的概念,掌握多态的概念以及使用方法,掌握匿名内部类。主要内容对象转型多态匿名内部类1.对象转型在Java程序设计中,对象的类型转换分为向上转型和向下转型,类型的转换是在继承的基础上而言的。根据以前学的知识,在实例化一个对象时,通常将该类的一个引用“指向”实例化的对象。在Java中,允许将一个父类的引用“指向”子类的对象,这种子类的对象可以当做基类的对象来使用称作“向上转型(upcasting)”。之所以称之为向上转型,是因为在传统意义上类继承图的画法是根位于最顶部,再逐渐向下扩展,父类在上子类在下,由于向上转型是把子类转化成父类类型,是从下向上的转型,所以称之为“向上转型”。1.对象转型向上转型是肯定是安全的,因为我们是将一个更特殊的类型转换成一个更常规的类型。换言之,派生类类是基础类的一个超集。它可以包含比基础类更多的方法,但它至少包含了基础类的方法。进行向上转型的时候,类接口可能出现的唯一一个问题是它可能丢失方法,而不是赢得这些方法。这便是编译器允许向上转型的原因所在。当存在向上转型时,可以使用instanceof运算符来判断该引用型变量所“指向”的对象是否属于该类或该类的子类,也就是说,instanceof操作符的前一个操作数通常是一个引用类型,后一个操作数通常是一个类,它用于判断前面的对象是否是后面类的,或者其子类的实例。如果是,结果为true,否则为false。1.对象转型当存在向上转型时,可以使用instanceof运算符来判断该引用型变量所“指向”的对象是否属于该类或该类的子类,也就是说,instanceof操作符的前一个操作数通常是一个引用类型,后一个操作数通常是一个类,它用于判断前面的对象是否是后面类的,或者其子类的实例。如果是,结果为true,否则为false。例4-11(对象转型):1.对象转型【例4-11】向上转型及instanceof运算符使用1.对象转型注意第17行:
虽然p引用的是Teacher类的对象,但是它不能够访问Teacher类添加的showTitle()方法,只能访问父类的成员变量和成员方法。【例4-11】向上转型及instanceof运算符使用(续)1.对象转型子类的对象可以当做基类的对象来使用称作向上转型(upcasting),反之成为向下转型(downcasting),向下转型是将父类引用的对象转换为子类类型。例如在例4-11中,将主函数中定义的p2对象强制类型转换成Teacher类的对象:Teachert2=(Teacher)p2;向下转型是不安全的,不是所有情况的向下转型都可以实现,向下转型时,如果父类引用的对象是指向的子类对象,那么在向下转型的过程中是安全的(如上面例子中p2本身是指向Teacher类的对象的,所以向下转型是合法的),也就是编译是不会出错误的。2.多态多态,是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性。其实,Java的引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一样,就可能出现所谓的多态。2.多态运行结果【例4-12】多态的实现2.多态同样是调用Person引用的work()方法,但是由于传入的子类对象的不同,程序的输出结果是不同的:当传入的是Teacher类对象,则调用Teacher类重写的work()方法,输出“教师授课”当传入Student类对象,则调用的是Student类重写的work()方法,输出“学生听课”【例4-12】多态的实现2.多态多态不但解决了方法同名的问题,而且使程序变得更加灵活,从而有效地提高程序的可扩展性。多态是Java程序设计中经常用到的技术,多态的出现让程序具有更好的可替换性、可扩展性、接口性和灵活性。多态必须具备三个必要条件,分别是:(1)要有继承;(2)要有重写;(3)父类引用指向子类对象(向上转型)3.匿名内部类匿名内部类顾名思义是没有名字的内部类。匿名内部类正是因为没有名字所以只能使用一次,使用匿名内部类的前提是必须继承一个父类或者接口。请看内部类实现接口的例子4-13下面使用匿名内部类的方式改进该程序【例4-13】使用内部类Teacher实现Iperson接口3.匿名内部类【例4-14】使用匿名内部类实现Iperson接口3.匿名内部类匿名内部类一般在类较简单、只用到一个实例的实例的情况下使用,使用匿名内部类要注意以下原则:(1)匿名内部类不能有构造方法,应为匿名内部类没有类名,所以无法定义构造方法;(2)匿名内部类不能定义任何静态成员、方法和类;(3)匿名内部类不能是public,protected,private,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小麦蚜虫飞防施药技术方案
- 肉鸭大棚养殖防疫管理制度
- 营养早餐搭配标准手册
- 稻田蚜虫飞虱统防统治作业方案
- 温室黄瓜嫁接育苗技术规程
- 会员健康档案管理细则
- 职业病危害告知警示管理规定
- 亚健康状态辨证问诊话术手册
- 羊舍通风换气操作管理规范细则
- 经络疏通养生项目服务流程
- 湖南省郴州市2024-2025学年八年级下学期期末考试数学试卷(含答案)
- 西游记火烧盘丝洞课件
- 办公耗材及维修合同范本
- GB/T 20242-2025声学助听器真耳声性能特性测量
- 噪音的危害培训课件
- 双减小学数学作业设计讲座
- 中石油台账管理办法
- 大学国家安全教育考试试题及答案
- 2025年广东省中考物理试题卷(含答案)
- 老年护理案例分析模板
- 总包与分包消防安全协议
评论
0/150
提交评论