使Java对象的属性仅可由该对象访问

使Java对象的属性仅可由该对象访问,java,private-members,Java,Private Members,Java中有没有一种方法可以表示对象o的属性x只能由o本身访问(我指的是点符号o.x)?要明确的是:我说的是Smalltalk中的对象级访问,而不是类级访问(因此private不够私有) 我很抱歉-我相信这已经被问过很多次了,但我在搜索时似乎选择了错误的关键字。你想做什么是不可能的。每个对象都有自己的实例变量集,只有在它们不是静态的情况下,才可以通过该对象访问它们。因此,简而言之,如果您希望Java对象的属性仅可由该对象访问,请保持该对象处于活动状态:)。在Java中这是不可能的(没有比标记为“

Java中有没有一种方法可以表示对象o的属性x只能由o本身访问(我指的是点符号o.x)?要明确的是:我说的是Smalltalk中的对象级访问,而不是类级访问(因此private不够私有)


我很抱歉-我相信这已经被问过很多次了,但我在搜索时似乎选择了错误的关键字。

你想做什么是不可能的。每个对象都有自己的实例变量集,只有在它们不是静态的情况下,才可以通过该对象访问它们。因此,简而言之,如果您希望Java对象的属性仅可由该对象访问,请保持该对象处于活动状态:)。

在Java中这是不可能的(没有比标记为“private”的字段更私有的了),但如果您仔细想想,这也是合乎逻辑的:您只能在公共类源代码中修改其他对象的私有字段,如果你控制类的源代码,你可以做任何坏事或好事


顺便说一句,您甚至可以通过反射访问其他类的私有变量,如果没有安装安全管理器,或者安全管理器的策略允许,请参见以下内容:

no.但是您需要它做什么?只要您的变量不是
static
this.x+=1
只会影响当前实例的
x
。最好的方法是发布一个简短的代码示例,以演示您的问题。我还没有完成示例,只是意外地点击了RET。现在它更有意义了吗?又来了:好吧,比方说,我希望每个游戏对象都能向右移动一步。所以在类定义中我写了:this.x+=1;但我不想让游戏对象操纵另一个游戏对象o(属于同一类!)的位置,因为它会说:o.x+=1每个对象都应该能够改变自己的位置,但不能改变其他对象的位置。听起来很自然-在Smalltalk中是这样,但在Java中不是这样。是的,这是无可奈何的。。。谢谢你的澄清。对我来说,Java访问修饰符似乎与库设计最相关。在我的例子中,当只有一个程序员可以访问所有东西时(我现在正在教高中生,想向他们展示良好封装的好处),它们几乎毫无意义。还是他们?