对象转型

向上转型:

子类对象转为父类,向上转型不需要显示的转化。

Father Father = son;向上转型会丢失子类独有的特性,但是不会出错。

 

 

向下转型:

父类对象转为子类,向下转型需要强制转化。

Son son = (Son)Father;能获取dog独有的方法,但是向下转型可能会出现错误,需要谨慎。

例如:

Cat和Dog都属于Animal,但是Cat不可以强转成Dog类,所以转型之前做一次instanceof判断是否可以强转。


总结
1、静态分派是根据静态类型选择对应的版本,向上转型了后静态分派的过 程只能在Animal这个类型查找方法,所以dog的特有方法就丢失了。
2、动态分派的过程还是依靠运行时类型决定的所以调用的方法还是Dog类 的。
也由此得出一个结论,一个对象能调用的方法由它的【静态类型】决定。
posted @ 2021-12-24 09:20  CcYcHu  阅读(37)  评论(0)    收藏  举报