背景:
基类指针指向派生类对象
仍然调用了基类同名方法
基类方法没有mybatis query注解处理名叫entity对象,再一次看出调用的基类的方法
问题:
1 为什么基类的方法也被mybatis代理了
在 jdk动态代理源码底层(jdk生成字节码及5种字节码生产方式比较)中指出,jdk动态代理使用Class.getMethod方法
getMethods()会获取到本类及所有基类的public方法
2 为什么会出现基类和派生类两个方法,而没有覆盖
⼦类和⽗类的⽅法必须要具有相同的函数名称、参数列表,并且⼦类的返回值与⽗类相同或者是⽗类返回类型的⼦类型(jdk1.5之后)
--------------------------------------------------------
链接:https://wenku.baidu.com/view/d3dcb0025bfb770bf78a6529647d27284b7337e9.html
3 为什么调用基类而不是派生类方法,明明派生类方法的参数范围更小更精准
这与java 重载优先级有点关系,更复杂的是涉及到继承,不研究,应避免,这也是所有改写方法要加@Override的原因