我在Java的初学者,我用PHP,C++和Lua和从未有过这个问题,我做了两个班只为锻炼的缘故Facto和MyFacto,第一个确实发现一个因子,第二个应该发现通过增加阶乘,而是通过乘法.不要因为愚蠢而毫无意义的代码而责备我,我只是在测试并尝试获得Java的支持.
主要:
public class HelloWorld {
public static void main(String[] args) {
Facto fc = new Facto(5);
fc.calc();
System.out.println(fc.get());
MyFacto mfc = new MyFacto(5);
mfc.calc();
System.out.println(mfc.get());
}
}
Run Code Online (Sandbox Code Playgroud)
Facto.java:
public class Facto {
private int i;
private int res;
public Facto(int i) {
this.i = i;
}
public void set(int i) {
this.i = i;
}
public int get() {
return this.res;
}
public void calc() {
this.res = this.run(this.i);
}
private int run(int x) {
int temp = 0;
if(x>0) {
temp = x + this.run(x-1);
}
return temp;
}
}
Run Code Online (Sandbox Code Playgroud)
MyFacto.java:
public class MyFacto extends Facto {
public MyFacto(int i) {
super(i);
}
private int run(int x) {
int temp = 0;
if(x>0) {
temp = x * this.run(x-1);
}
return temp;
}
}
Run Code Online (Sandbox Code Playgroud)
我认为结果应该是15和120,但我得到15和15.为什么会发生这种情况?它是否与calc()方法没有被覆盖有关,它使用run()了Facto类中的方法?我怎样才能解决这个问题或者什么是覆盖这样的东西的正确方法?