Java中受保护字段的重点是什么,因为它打破了数据封装原则?

时间:2017-01-04 03:14:41

标签: java oop protected

以下是来自" Core Java":

的句子
  

假设您的类已被其他程序员使用,并且您使用受保护字段进行了设计。您不熟悉,其他程序员可能会从您的类继承类并开始访问受保护的字段。在这种情况下,您不能再更改类的实现而不会让这些程序员感到不安。这违背了OOP的精神,它鼓励数据封装。

因此,我想知道Java中保护字段的重点是什么?

2 个答案:

答案 0 :(得分:0)

如果超类和子类不是由同一个开发人员(或同一个组织)维护,则不鼓励使用。但是,如果超类和子类是紧密耦合的代码,那么它是一种有用的技术。例如,同一个库的组件。

作为类比,在商业世界中,每笔交易都应该受到一些法律合同的保护,人们会说,如果没有某些法律合同的保护,就可以“劝阻”。如果各方是不同的商业实体,情况就是如此。但是,当双方不是商业实体而是同一家族的成员时,显然不能适用同样的原则。

OOP是关于代码的组织。在不同的情况下,将需要不同的组织原则。

答案 1 :(得分:0)

我认为它在抽象类中更有用。例如,我最近为视频游戏写了一个抽象类,其中有一个旋转场(一个角度)。抽象类并不太关心如何计算角度,具体类将负责根据需要设置角度。抽象类使用它,具体类设置它。

还有其他方法可以实现这一目标。另一个变体是让具体类实现一个名为getAngle的方法,抽象类在需要旋转值时会调用该方法,但是出于性能目的,我没有采用这种方法。