如何使用抽象方法设置私有数据字段?
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 中不可见。
我有一个名为 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 中不可见。