5

我想要类似于 的东西protected,其中只有实现该protected字段的类及其子类的任何内容都可以访问它。

所以,我希望能够将基类中的变量声明为private,但仍然能够从子类中访问它。

也许这违背了子类化的本质private,和/或protected

Java中是否存在类似的东西?

4

4 回答 4

10

Java 中的字段只有四种访问级别:

  • private
  • 包私有(默认;无访问修饰符)
  • protected
  • public

protected将允许子类、同一包中的其他类以及类本身中的成员访问该protected成员。

简短的回答是,没有办法完全达到预期的效果。

有关这四个访问修饰符的描述,Java 教程中的控制对类成员的访问有更具体的信息。

于 2009-09-12T15:49:15.080 回答
2

如果您控制代码库,则始终可以使用基类控制进入包的内容 - 如果它在其包中单独存在,则只有子类可以访问您想要保持私有的成员,子类除外。

于 2009-09-12T15:54:20.627 回答
1

不,没有访问修饰符可以做到这一点。修饰符是最接近的protected东西,但是它将字段暴露给同一包中的任何类以及子类(在同一包中或在同一包中)。

于 2009-09-12T15:48:45.583 回答
0

不可能。您仍然可以将您的变量声明为私有,然后声明修改超类中的变量的公共方法。然后调用变量的公共方法。

于 2014-10-30T09:39:08.340 回答