为什么我可以在java中访问另一个对象的私有实例变量?

问题描述 投票:0回答:1

我正在创建一个名为 MyList 的类,并将所有实例变量声明为私有。 在我名为“MyListClient”的客户端代码类中,我声明了对象list1,当然,MyListClient不能直接通过list1.size访问私有实例变量size,我唯一能做的就是调用方法list1.size()。

但是,在名为“MyList”的实现类中,对于方法addAll,为什么我可以访问另一个对象的私有实例变量。我在这里附上了屏幕截图,在 addAll 方法中,“other”是同一类“MyList”的不同对象。但我可以编写代码,例如“other.size”或“other.elementData”,没有发生错误。我错过了什么吗?我认为您无法访问另一个对象的私有实例变量,但在这里您可以。在客户端代码类中,“List1”也是同一个类MyList的不同对象,不能像“list1.size”那样写,我很困惑。 我认为编写“other.size”和“other.elementData”这样的代码是错误的,错误应该发生。然而它是正确的代码。我无法理解为什么

java variables instance private
1个回答
0
投票

private
访问修饰符使得只有它声明的class才能访问它,
addAll
方法是在您的
myList
类本身中声明的,这意味着您可以访问
other.elementData[i]

====================================================== ==============

旁注 (请记住,这不是必需的,而是个人喜好)

而不是使用 ->

for (int i = 0; ...)
像这样使用 for 每个循环 ->

for(int a : other.elementData) {
   add(a);
}
© www.soinside.com 2019 - 2024. All rights reserved.