我才接触java没几天,现在刚看到private的用法,有点想不明白,很多资料上都说,把属性定义成private,然后在定义一个set,一个get方法,可以达到封装的效果,可以防止外界直接访问,也就是在别的类中不能用 对象.属性的方式直接访问,而需要用对象.getXX方法访问,可是这2种访问有什么区别吗,我怎么感觉效果都一样呢,还有在单列设计模式中,把构造方法私有化,也就是在别的类中不能用new来创建该类的对象,而需要调用一个static方法返回一个该类的对象,这样做又有什么好处呢,不都是创建一个对象吗? 我真的搞不明白,private这里面有什么好处,我只是个初学者,往解答者能够详细一点,不胜感激!
再说private,它实现了数据的封装,pricate的成员只有在该类的内部才能被访问。用thinking in java里的话说,“提供get/set方法以读取和改变数值,对OOP而言这是最优雅的方式,而且这也是javaBeans的基本原理”
比如public String getValue(){
return interceptor();
}private String interceptor(){
....
}外界虽然能调用getValue,但不知道interceptor是如何实现的static变量初始化时直接建立在内存上,不需要实例化一个类才能得到
这样就能够保护数据不被违规访问
private int a;
public int b; public int getA(){
return this.a;
}
测试代码如下:public class Test{
public static void main(String args[]){
Num n = new Num(); System.out.println(n.a);//报错
System.out.println(n.b);//没错,但是不安全;
System.out.println(n.getA());//这是提倡的做法
}
}
他的所漏在外部的部分 如:手
当有一个动作: 拉手
这是你可见的,public,可直接调用
但拉手的过程需要:神经 体液 肌肉 等反应(映射到类中是方法或属性),这些就要设置成为private了,要不然别人用起来不方便,还很缀余,并且很不安全(表现为修改属性,你试试让一个人拉你神经哈哈^^)
1.可以在set和get方法中追加一些验证。比如,对set方法的参数进行验证,是否满足要求。
2.set和get方是两个方法,可以用不同的访问控制符来定义。比如,将set方法定义成protected,而将get方法定义成public。则……效果很明显。
3.javaBean会用反射机制来访问你的属性,set和get方法是一套规范性的东西。至于单例模式,你应该再多看看例子,然后自己比较一下,如果不用单例模式,会有什么问题。
建议你看下核心编程第8版上卷