JAVA中的向上转型
1.一个父类shape,包含draw();erase();move();等方法。其子类circle,triangle等,会继承这些方法。
2.单独编写了一个方法:
1 void doSomething(Shape shape) {
2 shape.erase();
3 //...
4 shape.draw();
5 }
那么,这个方法可以与任何Shape对话。
3.如果按照如下方法调用:
1 Circle circle = new Circle();
2 Triangle triangle = new Triangle();
3 doSomething(circle);
4 doSomething(triangle);
这些doSomething()的调用会自动正确的处理,而不管对象的确切类型。
4.当Circle被传入到,本来预期接受Shape的方法中时。由于Circle可以被看做是Shape,那么doSomething()可以发送给Shape的任何信息,Circle都可以接收。
这里表达的意思只是“你是一个Shape, 你可以erase()和draw()你自己,do it,注意细节的正确性就好”。
5.把将 导出类 看作是它的 基类 的过程,称为 向上转型。转型为一个基类,就是在继承图中向上移动。