Я знаю, что могу использовать отражение для вызова частного метода, а также для получения или установки значения частной переменной, но я хочу переопределить метод.
public class SuperClass {
public void printInt() {
System.out.println("I am " + getClass() + ". The int is " + getInt());
}
private int getInt() {
return 1;
}
}
public class SubClass extends SuperClass {
public static void main(String[] args) {
(new SubClass()).printInt();
}
public int getInt() {
return 2;
}
}
Я хочу, чтобы метод main
в SubClass
выводил 2
, но он выводит 1
.
Я слышал, что это можно сделать с помощью отражения, но я не могу понять, как это сделать.
Если не отражение, кто-нибудь знает другой способ сделать это?
(Кроме защиты SuperClass.getInt()
или копирования и вставки метода printInt()
в SubClass
.)
Если на самом деле переопределить частный метод невозможно, есть ли способ поместить на него какой-то триггер, который будет вызывать метод в моем подклассе до или после выполнения частного метода?