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