Java 我可以在同一类的对象之间封装成员吗?

Java 我可以在同一类的对象之间封装成员吗?,java,c++,oop,encapsulation,Java,C++,Oop,Encapsulation,私有访问只允许同一类的对象访问它。但是,是否有任何方法可以限制类成员,从而只有所有者对象(而不管类是什么)才可以访问它 与现实世界中的物体类似,你的屁股是你自己的隐私,没有你的允许,任何人都不应该仅仅因为他/她是人类同胞就接触到你的屁股。有没有办法在代码中实现这一点 注意:这是一个普遍的问题,但是既然我将使用Java和C++,我想看看这是如何在每种语言中实现的。 < P>这在C++和java java中都是不可能的,两种语言都使用类级访问修饰符而不是对象级的修饰语。 这是有原因的。参见,例如…[

私有访问只允许同一类的对象访问它。但是,是否有任何方法可以限制类成员,从而只有所有者对象(而不管类是什么)才可以访问它

与现实世界中的物体类似,你的屁股是你自己的隐私,没有你的允许,任何人都不应该仅仅因为他/她是人类同胞就接触到你的屁股。有没有办法在代码中实现这一点


注意:这是一个普遍的问题,但是既然我将使用Java和C++,我想看看这是如何在每种语言中实现的。

< P>这在C++和java java中都是不可能的,两种语言都使用类级访问修饰符而不是对象级的修饰语。 这是有原因的。参见,例如…

[

类的私有成员只能由成员和 该类的朋友,无论成员是否在 相同或不同的实例

Java也是如此[

私有类成员或构造函数只能在 顶级课程的主体

通过将编程规则强加给您的项目可能会有一些变通方法,包括强制使用setter和getter,但它们很难强制执行


我个人唯一了解的例外是SimalTale//Cudio>编程语言,其中一个私有成员对拥有它的对象来说是真正私有的。

< P>我想你必须给出一个具体的例子,你的尝试是这样做的。对我来说,你的类比太抽象了。C++不直接支持它,而是依赖于WHA。如果你不想做,你也许可以实现它


我能想到的一件事是在基类中有受保护的数据。让它成为机密容器(例如
std::vector
)。派生类的实例现在可以访问其基类的实例数据。但是派生类的任何其他实例都不能访问它。当然,基类可以访问它。但是您可以控制基类的功能(例如,您可以使其不可复制,等等).

在Java中,这是不可能的。虽然没有访问说明符,但您仍然可以在对私有字段的访问方法中使用一点逻辑来实现该行为。也许您可以这样做,当调用
getter
获取值时,您可以使用调用它的对象检查当前对象在内存中的地址,并查看如果它们是相等的,那么您知道“代码>所有者”/CODE正在调用以获取值。C++中既不。关键字<代码>私下<代码>相对于类,而不是实例。但是为什么要这样做?用例是什么?