我才接触java没几天,现在刚看到private的用法,有点想不明白,很多资料上都说,把属性定义成private,然后在定义一个set,一个get方法,可以达到封装的效果,可以防止外界直接访问,也就是在别的类中不能用 对象.属性的方式直接访问,而需要用对象.getXX方法访问,可是这2种访问有什么区别吗,我怎么感觉效果都一样呢,还有在单列设计模式中,把构造方法私有化,也就是在别的类中不能用new来创建该类的对象,而需要调用一个static方法返回一个该类的对象,这样做又有什么好处呢,不都是创建一个对象吗? 我真的搞不明白,private这里面有什么好处,我只是个初学者,往解答者能够详细一点,不胜感激!

解决方案 »

  1.   

    避免外面直接访问数据成员可以启动封装作用,并且限制对数据成员的操作。
    比如
    class Person{
       private int age;
       public getAge(){
          return age;
    }
       void setAge(int age){
          if(age < =0){
             throw new Exception();
          }
          this.age = age;
    }
    }
    这种情况下可以对数据成员进行适当的检测。但直接允许访问数据成员的话就没有办法了。
      

  2.   

    这就是java中的对外只开发接口。隐藏内部实现。