关于多态的一些问题!

img


子类是接口实现类,父类没有对接口进行实现,为什么父类对象能够转型成接口

java中任意对象强转为接口类型都不会有编译错误,java中的类可以多实现接口,Java编译器无法判断该类是否实现了该接口所以不会有编译错误。也就是说,这里编译是没什么问题的,运行的时候就有问题了
我模拟了一下你的环境,发现判断条件是一直都是false的,你运行也不会出错,因为进不去里面。我将父类强转放在外面,运行就出错了。

img

测试结果:父类转不了接口。而子类实现了方法,可以转

已经做了判断,如果p3实现了接口,那么强转成接口
这样不管条件到底是true还是false,总不会抛错误

什么是多态:用抽象代表具体,越是抽象的越能代表更多具体的