从SuperClass继承的打印字符串属性显示为Null



我正在扩展一个类,并在子类构造函数中使用super关键字to。

但是,当我尝试打印继承的属性String时。它返回null

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?

为什么不打印我在创建对象时传递的问题?我怎样才能纠正这个问题呢?

谢谢

这是因为父类和子类的访问修饰符的作用域。

在类Question中,将question变量的作用域设置为限制较少的东西。如

protected String question;

和在子类TrueFalseQuestion中,完全删除变量定义,以便子类将引用父变量。

String question; // <--- remove this

最新更新