对象转型
向上转型:
子类对象转为父类,向上转型不需要显示的转化。
Father Father = son;向上转型会丢失子类独有的特性,但是不会出错。
向下转型:
父类对象转为子类,向下转型需要强制转化。
Son son = (Son)Father;能获取dog独有的方法,但是向下转型可能会出现错误,需要谨慎。
例如:
Cat和Dog都属于Animal,但是Cat不可以强转成Dog类,所以转型之前做一次instanceof判断是否可以强转。
总结
1、静态分派是根据静态类型选择对应的版本,向上转型了后静态分派的过 程只能在Animal这个类型查找方法,所以dog的特有方法就丢失了。
2、动态分派的过程还是依靠运行时类型决定的所以调用的方法还是Dog类 的。
也由此得出一个结论,一个对象能调用的方法由它的【静态类型】决定。

浙公网安备 33010602011771号