Jac*_*ack 17 java oop friend-class
我想知道为什么Java的设计没有friend
C++中提供的指令,以便更好地控制哪些方法和实例变量可以从已定义类的包外部获得.
我没有看到任何实际的原因或任何特定的缺点,它似乎只是一个设计问题,但如果添加到语言中则不会产生任何问题.
Mih*_*der 10
总的来说,我认为这是因为增加了认知复杂性,并且创造了一个改进的案例数量很少.
我想说在这个时刻生产的极其庞大的java行可以证明friend
关键字并不是真正的大损失:).
有关更具体的原因,请参阅@ dwb的答案.
以下是我头脑中的几个原因:
小智 6
只有一个非常天真和没有经验的程序员会提倡反对朋友.当然它可能被滥用,但公共数据也是如此,但提供了这种能力.
与流行的观点相反,在许多情况下,特别是对于基础设施功能,其中朋友访问导致更好的设计,而不是更糟糕的设计.当一个方法被FORCED公开时,经常会违反封装,但是我们别无选择,因为Java不支持朋友.