Upcast -- 把衍生类的对象当作其基础类的对象对待
void doStuff(Shape s) {
s.erase();
// ...
s.draw();
}
Circle c = new Circle();
Triangle t = new Triangle();
Line l = new Line();
doStuff(c);
doStuff(t);
doStuff(l);你是一种Shape,我知道你能将自己删掉,即erase();请自己采取那个行动,并自己去控制 所有的细节吧。
多态性:将一条消息发给对象时,如果不知道对方的具体类型是什么,但采取的行动同样是 正确的。
在Java中,所有的函数调用都是动态绑定的。