一旦知道Java通过后绑定实现了多态的方法调用,你就可以只编写同基类打交道的代码了。因为你知道所有的派生类也能正确地使用这些代码。或者换一个说法,你“向对象发一个消息,让它自己判断该做些什么”。
例如基类被称作shape,它有好几个派生类:circle,square,triangle等等。这里先创建一个circle对象,接着马上把它的reference赋给了shape。看上去这像是一个错误(一种类型怎么能赋给另一种);但是由于circle是由shape派生出来的,circle就是一种shape,因此这种做法非常正确。所以编译器会毫不含糊地接受这条语句,什么错都不报。
假设你调用了一个基类方法(派生类已经覆写这个方法),可能你会认为,这次总应该调用shape的方法了吧,因为毕竟这是shape的reference——编译器怎么会知道还要做其它事情呢?但是由于实现了后绑定(多态性),实际上它会调用这个方法。基类shape为继承类定义了一个共用的接口——也就是说,所有的shape都有两个方法。派生类会覆写这两个方法,以提供各自所独有的行为。