为什么Java中缺少朋友指令?

2022-09-02 23:46:01

我想知道为什么Java在设计时没有C++中可用的指令,以允许从定义类的包外部更精细地控制哪些方法和实例变量可用。friend

我没有看到任何实际原因,也没有任何具体的缺点,这似乎只是一个设计问题,但如果添加到语言中,不会产生任何问题。


答案 1

以下是我脑海中的几个原因:

  • 朋友不是必需的。它很方便,但不是必需的
  • 朋友支持糟糕的设计。如果一个类需要好友访问另一个类,那么您做错了。(见上文,方便,不需要)。
  • 朋友打破封装。基本上,我所有的都属于我,还有那边的那个人(我的朋友)。

答案 2

总的来说,我认为这是因为增加了认知复杂性,并且减少了它创造改善的案例数量。

我想说的是,目前生产中极其庞大的java行数可以证明关键字并不是一个很大的损失:)。friend

有关一些更具体的原因,请参阅@dwb的答案。