我正在扩展一个类,并在子类构造函数中使用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