动态绑定
与很多的面向对象编程语言不同,方法在默认情况下是动态绑定的(C++要通过virtual关键字实现)。
比如Circle、Triangle都是继承了Shape。
如果编写了这样一个方法:
void doSomething( Shape shape) {
shape.erase();
// ...
shape.draw();
}
这个方法可以与任何Shape对话。
Circle circle = new Circle();
Triangle triangle = new Triangle();
doSomething(circle);
doSomething(triangle);
erase和draw都会被正确的调用。
单根继承结构
所有的类都继承自单一的积累,Java中这个终极基类的名字叫 Object. C++没有。
单根继承结构是垃圾回收器的实现变得容易得多。