如何使用抽象方法设置私有数据字段?

How to use abstract methods to set a private data field?

我有一个名为 myClass 的抽象 class,而 class 有一个名为 x 的私有数据字段。我有一个 public getX 方法和一个抽象 setX 方法。

我有一个名为 mySubclass 的子 class,它扩展了 myClass。我正在尝试创建一个具体的 setX 方法,但是代码:

public void setX() {
  x = 24.99;
}

给我一个错误,因为 x 是私有的。我应该将 x 数据字段设置为受保护或 public,还是有办法让 x 保持私有?

您不能从子类设置超类的私有字段。在这种情况下,使您的 x 受到保护。

来自 Javadocs :The private modifier specifies that the member can only be accessed in its own class.

所以无论如何,您都不能访问 IT class 之外的私有变量。

具有私有访问修饰符的变量将其可见性限制在特定 class 范围内。尽管您的 setter 方法被覆盖为 public,但无法从另一个 class(mySubClass) 访问 x。覆盖的方法在 mySubClass 中,x 在 mySubClass 中不可见。