我在面向对象环境中工作,我正在与同事进行概念性讨论。假设您有两个类(" A
"和" B
")没有共同的祖先,并且B需要从{{1}访问信息}。它可以通过字段或getter来做到这一点。困境是必须宣布这些"公共"因此对整个世界都是可见的。因为"私人"可见性是不可能的(由于目的不同,类树中的位置完全不同),它们已被公开实现。
但是我想知道是否有一个概念(在任何 OO语言中)可以控制这些字段只应对A
和其他人可见?
答案 0 :(得分:2)
C ++ 有Friend class和Friend function
在 Java 或类似内容中,如果您可以修改这两个类,请使用Visitor pattern。
答案 1 :(得分:0)
在java中,您可以声明protected和package私有字段/方法。受保护的字段/方法可以访问同一个包中的类,以及扩展类。包私有字段/方法只能用于同一包中的类。
所以这样你就不能指定一个只应该具有访问权限的类,但你可以很好地限制访问权限以在应用程序/库中实现相同的效果。
请注意,java还提供了通过设置acces和securityRules来禁止访问更强大的机制。它甚至可以防止反射(在java中访问通常不可访问的字段/方法的常用方法)。但它可能不是您正在寻找的机制,因为它实际上不是一个基本概念。