文档详情

java基础 第七章.ppt

发布:2017-05-09约7.53千字共50页下载文档
文本预览下载声明
向上转型 ★ 归纳:多态的作用和优点 ⑴ 可扩展性 ◆ 那些操纵基类接口的方法不需要任何改动就可以 应用于新类 ◆ 分析:增加一个新类时,我们需要做哪些工作? 多态 ★ 归纳:多态的作用和优点 ⑵ 多态是将改变的事物与未改变的事物分离开来的 重要技术 ◆ 分析:我们对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、 构造器的调用顺序(复习) ⑴ 构造器的调用原则 ★ 调用基类构造器,这个步骤会不断 反复递归下去 构
显示全部
相似文档