5

这是一个例子:

class Parent {
    protected int A;

    public void displayA() {
        System.out.println(A);
    }
}

class Child extends Parent {
    protected static int A=2;
}

Child intance = new Child();
intance.displayA();

=> return null !!!

从父方法中检索子属性的方法是什么?

谢谢 :)

4

2 回答 2

3

您可以在 Child 的构造函数中设置 A 变量:

class Child extends Parent {
   // protected static int A=2; // this redeclares the variable -- it's a different variable

   public Child() {
      A = 2;
   }
}

但我认为你最好给父母的变量一个getter和setter,并根据需要从孩子或父母那里设置或获取它。在我看来,这比直接操作字段要好,因为您可以监视字段的更改并在更改的数据不合适时执行操作。

其他建议:学习并遵守 Java 命名规则。此外,您发布的代码中有许多粗心的错误,包括拼写错误。如果您要求其他人努力尝试免费帮助您,那么要求您做同样的事情并不是要求太多 - 努力用真实代码提出一个体面的问题,以免帮助您你比它需要的更困难。

于 2012-08-19T15:25:56.240 回答
2

在您的实例中,如果您使用 Child 类构造函数来设置 A 的值而不是重新声明变量,那么父类应该能够获取该值。

上述实例的问题在于,您正在重新声明子类中的变量,而不仅仅是更改超类中变量的值。

有没有理由将子变量声明为静态?如果您只需要该类变量的值,则可以直接引用它。然而,让多个子类设置变量值并由超类使用的一种更简洁的方法是让子类设置您想要的值,然后让超类引用该变量(可能使用 getter)子类已设置的值。

于 2012-08-19T15:28:28.037 回答