Как говорили другие, нет, вы не можете переопределить метод во время выполнения.Однако, начиная с Java 8, вы можете использовать функциональный подход.Function
- это функциональный интерфейс, который позволяет рассматривать функции как ссылочные типы.Это означает, что вы можете создать несколько из них и переключаться между ними (динамически) по схеме а-ля стратегии.
Давайте рассмотрим пример:
public class Example {
Function<Integer, Integer> calculateFuntion;
public Example() {
calculateFuntion = input -> input + 1;
System.out.println(calculate(10));
// all sorts of things happen
calculateFuntion = input -> input - 1;
System.out.println(calculate(10));
}
public int calculate(int input) {
return calculateFuntion.apply(input);
}
public static void main(String[] args) {
new Example();
}
}
Вывод:
11
9
Я не знаю, при каких обстоятельствах и дизайне вы намерены переопределить, но дело в том, что вы заменяете поведение метода, то есть переопределение.