扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
public 和 private 的疑问
有一个存储注册信息的类 ,msg_Register
public class msg_Register implements Serializable{
public String password;
public String nick;
public msg_Register(String nick,String pwd) {
this.setPassword(pwd);
this.setNick(nick);
}
}
读信息的时候只要直接 instance.password 或者 instance.nick 就可以了
这样做很方便吧,可看见好多程序里把一些字段设成private, 读取时要在类里写get,这样一个个写好麻烦的
想请教下什么时候该用 public ,什么时候又该用 private 呢?
一般来说类的成员属性都会设置成private
然后定义这些成员属性的get set 方法
这样做既符合了java面向对象的封装要求,能够保证数据的安全性
private对于类的封装很重要的。比如单例模式(一种设计模式)就是通过private来实现的。在实际编程中,你写了一个类,为了以后能保证自己的类的完整性,就把构造函数修饰成private,然后在类中写一个返回此类型的静态方法,new出一个对象返回它,这样一来,别人要使用你的类的对象,就只能使用类名打点调用哪个静态方法,相当于“类名打点”=一个对象。这样的话,你的类就封装起来了。
封装由此而来,属性私有通过public 的get set方法调用。有利于数据的安全性
private 是为了保护类中的属性,如果用了public的话其他成员就可以访问并修改属性了
所以一般用private 并且写内部public函数可以访问属性
在get和set方法里,我们可以在某个时刻做一些变动,此时其它调用这个类的其它类就无需做任何修改,可以继续正确运行了。
比如,我曾将把某个数据在set时压缩,在get时解压缩。 用这个方法来保存数据到数据库,可以极大的减少数据量。而对于调用者来说,根本不知道这个过程,因为他们无需知道这个,他们只需要知道get能拿到他们要的东西就好了。
另外get还可以做初始化,比如一个StringBuilder 我们可以在get的时候,判断如果为null,则new一个,如果不是则直接返回,这样在许多时候可以节省大量的内存。
懒惰的单例模式就是这么做的,也就是通过get可以在真正需要的时候才new出来。
仅仅是用于保存数据的,写成 PUBLIC 也无仿
如果这个数据的变化对类本身来将发生变化,那么这个值可能是不允许被直接访问的,就需要用一个函数来修改,在调用函数的的同时通知类完成相关的修改
根据不同的业务来区别使用public或是protected/或是private
保护重要的数据不被直接修改,而使用保护
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者