У меня есть два класса: Progression и FibonacciProgression, однако FibonacciProgression распечатывает некоторые неожиданные результаты, когда метод печати вызывается на 4 и 6, как показано ниже. Может ли кто-нибудь объяснить, ПОЧЕМУ это?java - наследование прогрессии
public class Progression {
protected long first;
protected long cur;
Progression() {
cur = first = 0;
}
protected long firstValue() {
cur = first;
return cur;
}
protected long nextValue() {
return ++cur;
}
public void printProgression(int n) {
System.out.print(firstValue());
for (int i = 2; i <= n; i++) {
System.out.print(" " + nextValue());
}
System.out.println();
}
public static void main (String[] args) {
Progression prog = new Progression();
System.out.println("Default Progression: ");
prog.printProgression(10);
}
}
И ..
public class FibonacciProgression extends Progression {
protected long prev;
FibonacciProgression(long value1, long value2) {
first = value1;
prev = value2 - value1;
}
FibonacciProgression() {
this(0,1);
}
protected long nextValue() {
long temp = prev;
prev = cur;
cur += temp;
return cur;
}
public static void main (String[] args) {
Progression fibProg = new FibonacciProgression(2,5);
System.out.println("Default Progression: ");
fibProg.printProgression(4);
fibProg.printProgression(6);
}
}
Ну они дают разные результаты: 2 5 7 12 & 2 9 11 20 31 51. Таким образом, я задаюсь вопросом, почему второй один не запускается как первый? – mark