[英]How do I correctly Override in Java?
在我的超類中,我有以下方法:
public int getSpeed(String t)
{
return 0;
}
在我的子類中,我用以下方法覆蓋了該方法:
public int getSpeed(String t)
{
return x;
}
然后我有以下內容:
ArrayList<super> //contains only objects of the subclass
for (super s:collection)
{
s.getSpeed("");
}
這總是返回 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;
}
}
output 是
1
1
1
如果代碼與您在問題中編寫的一樣,那么您已經正確實現了覆蓋。 查看零speed
值的替代解釋包括:
x
的值尚未初始化,或已設置為零。
注釋//contains only objects of the subclass
是不正確的。
但我不認為我們可以在沒有看到真實代碼的情況下說更多...
向覆蓋方法添加 @Override 注釋是確保您已覆蓋某些內容的好方法......並且是一種很好的做法......但在這里不會有任何區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.