java基础 第七篇.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
向上转型 ★ 归纳:多态的作用和优点 ⑴ 可扩展性 ◆ 那些操纵基类接口的方法不需要任何改动就可以 应用于新类 ◆ 分析:增加一个新类时,我们需要做哪些工作? 多态 ★ 归纳:多态的作用和优点 ⑵ 多态是将改变的事物与未改变的事物分离开来的 重要技术 ◆ 分析:我们对tune()方法所做的任何修改,不 会对程序中其他不应受到影响的部分产生破坏 多态 ⑴ i.play()调用的是父类的 play方法还是子类的play方法? ◆ 更进一步,是哪个子类的play方法? ⑵ 为什么正好是我们所期望的输出结果? 编译器是怎么知道的? 绑定 1、 绑定(Banding)的概念 ★ 将一个方法调用和一个方法主体关联 起来的过程称为绑定 绑定 2、 绑定(Banding)的分类 ⑴ 静态绑定(前期绑定,编译时绑定) ★ 在运行前进行绑定 ⑵ 动态绑定(后期绑定、运行时绑定) ★ 在运行的时候根据对象的类型进行绑定 绑定 3、 例子分析 ★ 我们再来分析一个非常经典的例子 绑定 ★ class Processor // 字符处理器 { public void a() { System.out.println(“Processor.a()”);} public void b() { System.out.println(“Processor.b()”);} } 绑定 ★ class Upcase extends Processor { public void b() // 实现对父类方法的覆盖 { System.out.println(“Upcase.b()”);} public void c() { System.out.println(“Upcase.c()”);} } 绑定 ★ class Processor // 字符处理器 { public void a() { System.out.println(“Processor.a()”);} public void b() { System.out.println(“Processor.b()”);} } 绑定 ★ class Processor // 字符处理器 { public void a() { System.out.println(“Processor.a()”);} public void b() { System.out.println(“Processor.b()”);} } 绑定 ★ class Apply { public static void main(String[] args) { // 向上转型 Processor pro = new Upcase(); pro.a(); // 实际调用的是Processor.a() pro.b(); // 实际调用的是Upcase.b() pro.c(); // 编译错误 } } 绑定 ★ 向上转型的归纳:基父类 实例 = new 子类(); ◆ 向上转型时,实例可以调用父类中所有特有的 方法(未在子类中覆盖的方法) ◆ 实例可以调用子类中覆盖父类的方法(即多态) ◆ 但是不可以调用子类中特有的方法(即父类中 没有的方法) 绑定 4、 注意:只有普通的方法调用可以是动态 绑定的,域与静态方法不存在动态绑定 ★ 任何域的解析都是在编译期间进行的 ★ 静态方法是类的方法(不存在与对象的 绑定) 构造器和多态 1、 构造器的调用顺序(复习) ⑴ 构造器的调用原则 ★ 调用基类构造器,这个步骤会不断 反复递归下去 构

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档