2016-02-27 143 views
0

這是我在父類@覆蓋Java的父類

public boolean ChoiceOfItem(){ 
    if (bread) 
     this.Choice("bread"); 
    if (meat) 
     this.Choice("meat"); 
    if (lettuce) 
     this.Choice("lettuce"); 
    if (tomato) 
     this.Choice("tomato"); 
    if (carrot) 
     this.Choice("carrot"); 
    return false; 
} 

代碼,這一個是從擴展(不父)類:

@Override 
public boolean ChoiceOfItem() { 
    if (ryeBread) 
     this.Choice("ryeBread"); 
    return false; 
} 

我的問題是什麼錯在哪裏? 期待您的消息。如果有必要,我將能夠發送整個代碼。

+6

那麼......「什麼是錯的」 - 你告訴我們!你的問題是什麼? – Marvin

+3

你應該在擴展類中調用'return super.ChoiceOfItem()'而不僅僅是false –

+2

你應該編輯這個問題並至少提供:1)代碼的預期結果是什麼(你想要達到什麼目的? )2)代碼的實際結果是什麼(會發生什麼,爲什麼會出錯?) 否則,您可能會在問題關閉時結束。 –

回答

0

ChoiceOfItem在處理某個項目時可能需要返回true,因此僅在該情況下才返回false。

public boolean choiceOfItem(){ 
    if (bread) 
     this.Choice("bread"); 
    else if (meat) 
     this.Choice("meat"); 
    else if (lettuce) 
     this.Choice("lettuce"); 
    else if (tomato) 
     this.Choice("tomato"); 
    else if (carrot) 
     this.Choice("carrot"); 
    else return false; 
    return true; 
} 

@Override 
public boolean choiceOfItem() { 
    if (super.choiceOfItem()) 
     return true; 
    if (ryeBread) { 
     this.Choice("ryeBread"); 
     return true; 
    } 
    return false; 
} 
+0

我認爲我通過更改代碼如下來對它進行整理 '@Override public boolean ChoiceOfItem(){ super.ChoiceOfItem(); if(ryeBread){ this.Choice(「ryeBread」); 返回true; } return false; }' 感謝您的建議P.S:對不起,我不能讓它清晰 – TheSarcasticDiode

0

首先要說那些方法一直都會返回false。 @Override只是一個標誌,告訴編譯器該方法被覆蓋。例如,當您更改父類的方法簽名時,這是很有意義的,因此編譯器會在子類中告訴您您不再覆蓋這裏。

+0

感謝它幫助 – TheSarcasticDiode