以前关于private关键字没有过多的想法,只是表示变量和函数只能在该类中使用。以前几乎从来没有通过一个对象去获取其私有变量的做法,一直的印象是仅限于一个实例,即默认this指针的情况。如:
Public Class A{
private int a;
public void output(){
System.out.println(a);
}
}
今天看String源代码看到下面的代码:public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String) anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
发现anotherString 是新建的一个对象,也可以在类中直接调用anotherString.value,我就纳闷了,这样也可以?value是私有成员啊。后来自己想想才发现自己认知一直有问题,这是在String类里面,即使是新建的一个对象也能直接调用它的私有成员。可能是因为我平时写代码的时候就没有通过一个对象去获取它的私有变量。