1. 向上转型
格式:父类名 对象名 = new 子类构造方法
- 坏处:只能使用父类的功能,不能使用子类特有功能,功能被限定。 自动转型后该对象优先执行子类重写的方法。子类中特有的方法不能调用。
- 好处:隐藏了子类型,提高了代码的扩展性。同时我觉得如果子类有太多复杂不使用的方法的也会被过去掉,减少JVM加载的冗余。不需要面对子类型,通过提高扩展性,或者使用父类的功能即可完成操作,就是使用向上转型。
如 List 有很多子类,其中就有ArrayList 和 linkedList,我们做实验如下。
2.向下转型
Father son = new Son();
((Son) son).sonMethod();
- 好处:可以使用子类型的特有功能
- 坏处:面对具体的子类型,向下转型具有风险。即容易发生ClassCastException,只要转换类型和对象不匹配就会发生。解决方法:使用关键字instanceof(用于测试一个对象是否是指定类的实例或其子类的实例)。