向上转型的好处,已经在这篇文章(这是一个链接)的代码中演示了,但是没有说不好处。
现在就说说不好处,以链接中的代码为背景,
Animal a1 = new Lion();
Animal a2 = new Mokeny();
new出来的Lion和Mokey对象向上转型为Animal对象,可以使用统一的eat(),让jvm去分辨到底是哪个子类调用的eat()。
但是,but,向上转型之后的a1、a2它们对应类中含有的方法、属性,而其父类即Animal中没有的方法、属性,a1、a2将调用不到。也就是讲,子类向上转型后无法访问自有而其父类没有的方法。