Boo*_*reg 0 java inheritance overriding
在我的超类中,我有以下方法:
public int getSpeed(String t)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在我的子类中,我们用这个方法覆盖了方法:
public int getSpeed(String t)
{
return x;
}
Run Code Online (Sandbox Code Playgroud)
然后我有以下内容:
ArrayList<super> //contains only objects of the subclass
for (super s:collection)
{
s.getSpeed("");
}
Run Code Online (Sandbox Code Playgroud)
这总是返回0.如何让它返回x?
编辑:我的代码几乎完全按照Bala R的解决方案显示,但是我只是对我的X做了一些愚蠢的事情,导致它每次都变为0.因此他的解决方案是正确的
也许你x的子类实际上是零还是没有初始化?
我刚试过(Ideone链接)
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws java.lang.Exception {
new Main();
}
Main(){
ArrayList<Super> list = new ArrayList<Super>();
list.add(new Sub());
list.add(new Sub());
list.add(new Sub());
for (Super s:list)
{
System.out.println(s.getSpeed(""));
}
}
}
class Super {
public int getSpeed(String t) {
return 0;
}
}
class Sub extends Super {
@Override
public int getSpeed(String t) {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
而输出是
1
1
1
Run Code Online (Sandbox Code Playgroud)