解决方案 »

  1.   

    private表示被修饰的变量只能在当前类里被访问
    你的这段代码return mt2.beep;还在当前类里啊,所以能被直接访问。
    相反的,如下这个就不在当前类里,编译就会报错的。
    public class MainTest1 { private boolean beep; static boolean access(MainTest2 mt2){
      
     return mt2.beep;
     }
     }
      

  2.   

    打个比方吧,
    public class MainTest1 {
     private boolean beep; public void setbeep(boolean b){
        this.beep=b;
    }
    public boolean getbeep(){
       return beep;
    }
     }
    与在一个类中,set.get函数可以得到当前类中的任何属性同理,只要在一个类中,就可以访问
      

  3.   


    package Time20140413;public class Test {
    /*
     * public class MainTest2 {
    private boolean beep;
    static boolean access(MainTest2 mt2){
    return mt2.beep;
    }
    }
     为何在access函数中,mt2可以直接访问beep变量???
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test1 t1 = new Test1();
    Test1 t2 = new Test1();

    t1.seti(2);
    t2.seti(3);

    t1.access(t2);
    }
    }
    public class Test1 {
    private int i;

    public void seti(int i)
    {
    this.i = i;
    }

    void access(Test1 t2)
    {
    System.out.println("t1.i = " + this.i);
    System.out.println("t2.i = " + t2.i);
    }
    }
    个人觉得2楼的解释是不正确的。
    在一个类中,set.get函数可以得到当前类中的任何属性同理,这句话在大多数情况下是没有问题的,但是在我上面的这两个程序中,在access函数中,要分清楚beep是本类中的beef,还是参数传进来的beef。总的来说(个人觉得):private修饰的成员变量或者方法是为了在另外一个类中创建该对象时,该对象不能访问自己的私有变量或者方法。但是这个例子中,是在本类,不是在另外一个类,所以我觉得可以死记硬背下这种特殊情况。我也不太懂,等待大神...
      

  4.   

    get,set函数,看看为什么要用这两个函数就知道了;