是否有像#34;受控能见度等概念?在任何OO语言/模型中?

时间:2016-08-18 08:10:18

标签: oop inheritance

我在面向对象环境中工作,我正在与同事进行概念性讨论。假设您有两个类(" A"和" B")没有共同的祖先,并且B需要从{{1}访问信息}。它可以通过字段或getter来做到这一点。困境是必须宣布这些"公共"因此对整个世界都是可见的。因为"私人"可见性是不可能的(由于目的不同,类树中的位置完全不同),它们已被公开实现。

但是我想知道是否有一个概念(在任何 OO语言中)可以控制这些字段只应对A和其他人可见?

2 个答案:

答案 0 :(得分:2)

C ++ Friend classFriend function

Java 或类似内容中,如果您可以修改这两个类,请使用Visitor pattern

答案 1 :(得分:0)

在java中,您可以声明protected和package私有字段/方法。受保护的字段/方法可以访问同一个包中的类,以及扩展类。包私有字段/方法只能用于同一包中的类。

所以这样你就不能指定一个只应该具有访问权限的类,但你可以很好地限制访问权限以在应用程序/库中实现相同的效果。

请注意,java还提供了通过设置acces和securityRules来禁止访问更强大的机制。它甚至可以防止反射(在java中访问通常不可访问的字段/方法的常用方法)。但它可能不是您正在寻找的机制,因为它实际上不是一个基本概念。

相关问题