2.6 多态性



对于上面这个类族关系,我们要进行的一项重要工作是将衍生类的对象当作基础类的对象对待。 它意味着我们只须编写单一的代码,令其忽略类型的特定细节,只与基础类的对象打交道。

Upcast -- 把衍生类的对象当作其基础类的对象对待

你是一种Shape,我知道你能将自己删掉,即erase();请自己采取那个行动,并自己去控制 所有的细节吧。

动态绑定

为Cirle调用draw()时执行的代码与为一个Square或Line调用draw()时执行的代码是不同的。 但在将draw()消息发给一个不知道确切类型的Shape对象时,根据Shape引用当时连接的实际 类型,会采取相应的正确的操作。

多态性:将一条消息发给对象时,如果不知道对方的具体类型是什么,但采取的行动同样是 正确的。

在Java中,所有的函数调用都是动态绑定的。


Next Page