简单地说,我有一个包含几个变量和方法的抽象类。其他类扩展了这个抽象类,但是当我尝试通过在抽象类中调用getter方法来读取抽象类中的私有变量时,它返回null作为变量的值。
public class JavaApplication {
public static void main(String[] args) {
NewClass1 n1 = new NewClass1();
NewClass2 n2 = new NewClass2();
n1.setVar("hello");
n2.print();
}
}
public class NewClass1 {
public String firstWord;
public void setVar(String var) {
firstWord = var;
}
public String getVar () {
return firstWord;
}
}
public class NewClass2 extends NewClass1{
public void print() {
System.out.println(makeCall());
}
public String makeCall() {
return getVar();
}
}
仍打印出null。
答案 0 :(得分:1)
在String
初始化之前,它将为null。你可能应该在抽象类中有一个构造函数来设置它。
public abstract class Command
{
String firstWord; // = null
protected Command(){}
protected Command( String w )
{
firstWord = w;
}
//...
}
public class Open extends Command
{
public Open()
{
this( "your text" );
}
public Open( String w )
{
super( w );
}
// ...
}
如果每次调用firstWord
时都需要修改execute()
字符串,则可能没有必要使用带有String
参数的构造函数(我在上面添加了一个默认构造函数)。但是,如果你这样做,那么
setFirstWord()
之前调用getFirstWord()
,或getFirstWord()
返回null
时处理案例。这可以通过简单地使用默认值(可能由每个子类确定)或其他内容,例如无法执行。由于我不知道您实施的所有细节,我无法告诉您更多信息。