我正在擴展一個類并在我的子類建構式中使用 super 關鍵字。
但是,當我嘗試列印繼承的屬性字串時。它回傳空
public class Question implements IQuestion, Serializable {
private String question;
public Question(String question){
this.question=question;
}
@Override
public String getQuestion(){
return question;
}
public class TrueFalseQuestion extends Question implements ITrueFalseQuestion{
String question;
boolean answer;
public TrueFalseQuestion(String question, boolean answer){
super(question);
this.answer=answer;
}
@Override
public String getQuestion(){
return question " True/False?";
}
@Override
public boolean checkAnswer(boolean answer){
return this.answer==answer;
}
}
所以當我創建一個 TrueFalseQuestion 物件并呼叫它的 getQuestion() 方法時,
我得到輸出:null True/False?
為什么不列印我在創建物件時傳遞的問題?我該如何糾正?
謝謝
uj5u.com熱心網友回復:
這是因為父類和子類上的訪問修飾符的范圍。
在課堂上Question,將question變數的范圍設定為限制較少的內容。例如
protected String question;
在子類中,TrueFalseQuestion完全洗掉變數定義,以便子類將參考父變數。
String question; // <--- remove this
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314621.html
上一篇:Moq:模擬控制器抽象基類的介面
