Могу ли я переопределить закрытый метод в Java?

Я знаю, что могу использовать рефлексию для вызова закрытого метода и для получения или установки значения закрытой переменной, но я хочу переопределить метод.

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. I've heard this can be done through reflection, but I can't figure out how. If not reflection, does anyone know of another way of doing it? (Other than making SuperClass.getInt() защищены, или копирование и вставкаprintInt() метод вSubClass.) If actually overriding the private method is not possible, is there a way of placing some sort of trigger on it that will invoke a method in my sub-class either before or after the private method executes?

Ответы на вопрос(10)

Ваш ответ на вопрос