Мой вопрос не является специфичным для Java, но я думаю, что это больше похоже на вопрос о шаблонах шаблонов. Попробую объяснить на примере:Имея тот же метод с двумя разными типами поведения?
У меня есть два класса (А и В), B расширяет A. два класса выглядеть следующим образом:
public class A {
protected int method1() {
System.out.println(method3());
}
protected int method3() {
return 3;
}
}
.
public class B extends A {
protected void method2() {
//Calling method1
method1(); // Output : 3
//Calling method1 another time but method3 needs to be slightly different
method1(); // Output needs to be : 6
}
}
Итак, я хотел бы назвать два раза один и тот же метод, но я хочу, чтобы изменить то, что находится внутри method3() при вызове его во второй раз. Очевидно, что я не хочу определять два разных метода1(), потому что метод1 не только распечатывает int, но и делает больше.
Второй method3 может выглядеть следующим образом:
protected int method3bis() {
return 2*3;
}
Я бы очень хотел, чтобы избежать прохождения какой-то аргумент через все методы, то, что будет выглядеть следующим образом:
protected int method1(int arg) {
if(arg == 0)
System.out.println(method3());
if(arg == 1)
System.out.println(method3bis());
}
Вы знаете хороший способ сделать это? Заранее спасибо :-)
Похоже, вы хотите переопределить 'метод1' в классе B. –
Вы можете добавить счетчик в метод1, который будет увеличиваться при использовании, а затем использовать этот счетчик во второй раз, когда он вызывается. – ryekayo
@ Zéychin согласился. Вам все равно нужно написать новое поведение в переопределении. –