在Java中,子类是否可以从其超类中获取私有字段和方法?

时间:2012-10-09 13:30:13

标签: java inheritance private

  

可能重复:
  Are private fields inherited by the subclass?

毫无疑问,子类无法直接访问私有字段。 但如果私有领域存在? 实际上,我可以通过公共或受保护的方法访问私有字段。

私人方法。

有没有人可以告诉我这是怎么回事?

4 个答案:

答案 0 :(得分:1)

您应该始终创建班级private的字段。并提供public访问器方法来访问这些字段..

通过这样做,您达到的encapsulation级别是任何OO language的核心..

另外,不允许直接访问的其他好处是,您可以根据需要和安全性修改字段,然后让外部类访问它。

事实上,通常建议access the private fieldsgetter methods,即使在同一个班级也是......“

这也有助于您轻松修改课程。

假设您将来想要更改字段的访问方式(也就是说,您希望在返回字段之前对字段进行一些处理)..现在,如果您直接访问字段,即使是在您自己的字段中class ..你必须在每个地方改变.. 但是如果你使用getter来访问字段,你只需要modify你的{{1}方法..

getter

答案 1 :(得分:0)

这是正常行为。超级类为您提供抽象,您应该处理。你不应该被实施细节所困扰。如果明天实现发生变化,则不需要更改子类 - 超类隐藏它。

答案 2 :(得分:0)

您所看到的是Encapsulation。您通过方法控制对类成员的访问,而不是直接访问它们。

答案 3 :(得分:0)

您可能希望阅读 public protected private 这些词的含义实例。

如果您希望子类能够访问这些字段和方法,则子类无法从其父级访问字段和方法(如果您希望子类能够访问这些字段和方法),那么您需要使用的可见性修饰符(在 protected 上。

使用 protected 特别是子类,只有子类可以访问父类的字段和方法。