java 创建了父类对象 调用父类方法 为什么最后子类方法也会被优先调用?

图片说明
图片说明
为什么子类方法也被调用了 而且还是优先父类方法调用的!!!

这完全不合理啊。害的我还测试可一遍,没有你那种情况。。图片说明

这个原理说来话长,但是其实我们从程序员的角度,把Java当成一个实用的工具看。
只有子类能够覆盖基类,并且改写方法,这样的编程语言的设计才“有用”。好比冰箱为什么能制冷说来话长,但是显然,只有能制冷的冰箱才有用。

有什么用?
程序员A设计好一个算法的框架主体,比如一个排序算法。他为了让这个程序通用,如何排序的代码没法写出来(有人要按照时间排序,有人按照id排序,有人要倒过来排序,有人要多个条件排序……)
他怎么做?他定义一个叫comparor的基类,以及compare的方法,这个方法传入两个值,返回比较结果。他肯定在主程序里只能调用这个基类的compare方法,但是把comparor这个类型作为参数传进来。
程序员B C D来调用A的排序算法,怎么做?他们从comparor继承,重写compare方法,有人比较id,有人比较日期……,然后作为sort方法的参数,把自己写好的派生类对象实例传入。

现在你想,如果程序要正确运行,应该调用派生类的还是基类的。哪个才“有用”。

子类继承父类会优先调用父类

子类继承父类会优先调用父类 图片不清楚,不完整