我有两个类,Progression和FibonacciProgression,但是FibonacciProgression会在下面的4和6上调用打印方法时打印出一些意想不到的结果。任何人都可以解释为什么这是?java-progression inheritance
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