java - 如何读写抽象类的变量

标签 java class variables abstract

简单地说,我有一个包含多个变量和方法的抽象类。其他类扩展了这个抽象类,但是当我尝试通过调用抽象类内部的 getter 方法来读取抽象类中的私有(private)变量时,它返回 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。

最佳答案

String初始化之前,它将为空。您可能应该在抽象类中有一个构造函数来设置它。

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 );
     }

     // ...
}
<小时/>

如果每次调用 execute() 时都需要修改 firstWord 字符串,则可能不需要使用带有 String 的构造函数> 参数(我在上面添加了默认构造函数)。但是,如果您这样做,那么要么

  • 必须确保在getFirstWord() 之前调用setFirstWord(),或者,
  • 处理 getFirstWord() 返回 null 的情况。这可以通过简单地使用默认值(可能由每个子类确定)或其他东西来实现,例如无法执行。

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

关于java - 如何读写抽象类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19600327/

相关文章:

c++ - 类重载?

java - java编程中方法的声明

java - 为什么我会收到变量未声明错误?

java - Tomcat + JPA + MySQL : java. lang.NoClassDefFoundError: javax/persistence/Persistence

java - Spring 致动器 '/auditevents'端点返回404

java - 使用 API 将 Excel 列转换为 Java

python - Python 类遇到问题

java - Hadoop 运行 WordCount 失败

mysql - bash - SQL 查询输出到变量

javascript - 在范围内定位变量?