多态

一、向上转型

把对某个对象的引用视为对其基类型的引用的做法,称作向上转型。

eg.

定义一个方法play(),参数是Instrument类型;类wind extends Instrument,类Brass extends Instrument;则调用时可以把子类的对象引用传参给方法:

play(wind);

play(Brass);

这么做,就不用多余的为每一个乐器都编写play方法,而是只写乐器类的play方法,然后子类向上转型去调用。

 

二、动态绑定

将一个方法调用和方法主体关联起来叫做绑定;动态绑定是指在程序运行时根据对象的类型进行绑定;Java的动态绑定是自动发生的

eg.

// 创建一个Circle对象,并把得到的引用传给它的父类Shape
Shape s = new Circle();
// 此时调用draw()方法(这是基类方法,在子类中也被覆盖了),此时由于动态绑定(多态),程序会正确调用Circle类里的draw()方法
s.draw()

一旦知道Java中所有的方法都是通过动态绑定实现多态这个事实后(除final方法),我们就可以编写只与基类打交道的程序代码了,并且这些代码对所有导出类都可以正确运行。

 

三、构造器和多态

构造器的调用顺序:

  • 调用基类构造器,从最顶层递归向下;
  • 按声明顺序调用成员的初始化方法;
  • 调用导出类的构造器主体。
posted @ 2016-03-25 15:50  lqzzang  阅读(131)  评论(0编辑  收藏  举报