Я нашел эту ошибку JDK и хочу понять, почему это происходит.
Сценарий (взятый из отчет об ошибке) очень прост: a class
объявляет метод private
и interface
объявляет метод public
с той же сигнатурой. Он компилируется без ошибок.
Однако, когда я запускаю этот код, я получаю IllegalAccessError
interface I {
public void m();
}
class A {
private void m() {
System.out.println("Inside Class A");
}
}
abstract class B extends A implements I {
}
class C extends B {
public void m() {
System.out.println("Inside Class C");
}
}
public class Test {
public static void main(String... args) {
B b = new C();
b.m();
}
}
Пожалуйста, помогите мне понять, почему эта ошибка существует как мой код компилируется отлично.
Exception in thread "main" java.lang.IllegalAccessError:
tried to access method A.m()V from class Test
at Test.main(Test.java:25)