class Person{
private String name;
private Person friend;
Person(String name){
this.name = name;
}
void setFriend(Person friend){
this.friend = friend;
}
String getName(){
return name;
}
String getFriendName(){
return friend.name; //我想知道这里的friend问什么可以调用name
}
}
public class self1{
public static void main(String[] args){
Person man1 = new Person("李润");
Person man2 = new Person("金娜");
man1.setFriend(man2);
man2.setFriend(man1);
System.out.println(man1.getName()+"的朋友: "+man1.getFriendName());
System.out.println(man2.getName()+"的朋友: "+man2.getFriendName());
}
}
private String name;
private Person friend;
Person(String name){
this.name = name;
}
void setFriend(Person friend){
this.friend = friend;
}
String getName(){
return name;
}
String getFriendName(){
return friend.name; //我想知道这里的friend问什么可以调用name
}
}
public class self1{
public static void main(String[] args){
Person man1 = new Person("李润");
Person man2 = new Person("金娜");
man1.setFriend(man2);
man2.setFriend(man1);
System.out.println(man1.getName()+"的朋友: "+man1.getFriendName());
System.out.println(man2.getName()+"的朋友: "+man2.getFriendName());
}
}
比如在javaAPI源代码里,查看String类的equlas方法可以看见源代码是这样的:
String类中有定义:
/** The value is used for character storage. */
private final char value[];equals方法是这样的:public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;//value是私有成员。
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
说明这种其实是很正常的,只是我们平时不怎么这样的运用,想当然了。呵呵
void setFriend(Person friend){
this.friend = friend;
}
上面的其实就是一个名字为friend的对象
private String name;
上面的是一个私有变量,那一个对象调用自己的私有变量是合法的,也是没有疑问的。
本类中 同一包的类中 子类 其他类
public TRUE TRUE TRUE TRUE
protected TRUE TRUETRUE TRUE FALSE
默认的 TRUE TRUE FALSE FALSE
private TRUE FALSE FALSE FALSE
不知道楼主想要到底了解什么?