Java语言中方法重写的本质:
1、找到操作数栈顶的第一个元素所执行的对象的实际类型,记作C。
2、如果在类型C中找到与常量中的描述符号简单名称都相符的方法,则进行访问权限校验,如果通过则返回这个方法的直接引用,查找过程结束;如果不通过,则返回java.lang.IllegalAccessError异常。
3、否则,按照继承关系从下往上依次对C的各个父类进行第2步的搜索和验证过程。
4、如果始终没有找到合适的方法,则抛出java.lang.AbstractMethodError异常。
IllegalAccessError:
程序试图访问或修改一个属性或调用一个方法,这个属性或方法,你没有权限访问。一般的这个会引擎编译器异常,这个错误如果发生在运行时,就说明一个类发生了不兼容的改变。
原文:https://www.cnblogs.com/xxeleanor/p/13657677.html