如何读取和写入抽象类的变量

时间:2013-10-25 22:24:25

标签: java class variables abstract

简单地说,我有一个包含几个变量和方法的抽象类。其他类扩展了这个抽象类,但是当我尝试通过在抽象类中调用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。

1 个答案:

答案 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时处理案例。这可以通过简单地使用默认值(可能由每个子类确定)或其他内容,例如无法执行。

由于我不知道您实施的所有细节,我无法告诉您更多信息。