毫无疑问,子类无法直接访问私有字段。 但如果私有领域存在? 实际上,我可以通过公共或受保护的方法访问私有字段。
私人方法。
有没有人可以告诉我这是怎么回事?
答案 0 :(得分:1)
您应该始终创建班级private
的字段。并提供public
访问器方法来访问这些字段..
通过这样做,您达到的encapsulation
级别是任何OO language
的核心..
另外,不允许直接访问的其他好处是,您可以根据需要和安全性修改字段,然后让外部类访问它。
事实上,通常建议access the private fields
到getter methods
,即使在同一个班级也是......“
这也有助于您轻松修改课程。
假设您将来想要更改字段的访问方式(也就是说,您希望在返回字段之前对字段进行一些处理)..现在,如果您直接访问字段,即使是在您自己的字段中class ..你必须在每个地方改变.. 但是如果你使用getter
来访问字段,你只需要modify
你的{{1}方法..
getter
答案 1 :(得分:0)
这是正常行为。超级类为您提供抽象,您应该处理。你不应该被实施细节所困扰。如果明天实现发生变化,则不需要更改子类 - 超类隐藏它。
答案 2 :(得分:0)
您所看到的是Encapsulation。您通过方法控制对类成员的访问,而不是直接访问它们。
答案 3 :(得分:0)
您可能希望阅读 public , protected 和 private 这些词的含义实例。
如果您希望子类能够访问这些字段和方法,则子类无法从其父级访问字段和方法(如果您希望子类能够访问这些字段和方法),那么您需要使用的可见性修饰符(在
使用 protected 特别是子类,只有子类可以访问父类的字段和方法。