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());
  }
}

解决方案 »

  1.   

    private修饰的属性和方法在本类中调用,这很合法呀,没什么问题
      

  2.   

    private变量在本类(Person)中可以直接访问
      

  3.   

    friend 是Person类的一个对象,name是Person类的一个私有变量。在一个类中,它所定义的对象是可以直接调用该类的私有变量的。
      

  4.   

    这里没有什么问题  private String name; 这里那么是私有的的 用 getFriendName()方法可以调用
      

  5.   

    name虽然是私有变量,但是friend自己的私有变量,自己看自己的东西当然能看到啦
      

  6.   

    对啊,在外面的话这样肯定是不行的,但是在这个类里面就是可以的了。
    比如在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;
        }
    说明这种其实是很正常的,只是我们平时不怎么这样的运用,想当然了。呵呵
      

  7.   

    私有的friend是Person类的一个对象,当然可以访问
      

  8.   


    void setFriend(Person friend){
      
    this.friend = friend;  
    }
    上面的其实就是一个名字为friend的对象
    private String name;
    上面的是一个私有变量,那一个对象调用自己的私有变量是合法的,也是没有疑问的。
      

  9.   

    一般访问修饰符存在以下图表可以看出其可访问性。
                 本类中          同一包的类中       子类          其他类
    public      TRUE          TRUE            TRUE         TRUE
    protected   TRUE          TRUETRUE        TRUE         FALSE
    默认的        TRUE          TRUE            FALSE        FALSE
    private     TRUE          FALSE           FALSE       FALSE
      

  10.   

    friend是person类实例化的对象,对象当然可以调用类的成员方法了。
    不知道楼主想要到底了解什么?
      

  11.   

    建议仔细看看 “public” “private” “protect” “缺省”的规则