Вы получили некоторые подсказки из другой информации, но вот пример. Представьте себе два класса: Foo и Bar. Bar наследуется от Foo. Вот простая реализация каждого из них:
public class Foo {
private void myPrivateMethod() { System.out.printf("myPrivateMethod()\n"); }
public void myPublicMethod() { System.out.printf("myPublicMethod()\n"); }
}
public class Bar extends Foo {
public void barPublicMethod() {
System.out.printf("This is barPublicMethod()!\n");
myPublicMethod();
myPrivateMethod();
}
public static void main(String[] args) {
System.out.printf("This is main!\n");
Bar bar = new Bar();
bar.barPublicMethod();
}
}
Если вы попытаетесь скомпилировать этот код, вы получите следующую ошибку:
$ javac Foo.java Bar.java && java Bar
Bar.java:6: error: cannot find symbol
myPrivateMethod();
^
symbol: method myPrivateMethod()
location: class Bar
1 error
Если вы удалите вызов myPrivateMethod (), он работает . Такова природа частных методов.
Bar НИЧЕГО не знает о частных методах Foo. НИЧЕГО. Это означает, что вы не можете их переопределить, потому что Бар даже не знает, что они существуют. Вот что значит приватный.
Bar не может делать ничего с приватными методами из Foo. Ничего. Если вы хотите, чтобы Bar мог их переопределить, вам нужно изменить определение в Foo на protected или publi c.