科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道public 和 private 的疑问

public 和 private 的疑问

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

public 和 private 的疑问

作者:csdn 来源:csdn 2009年12月17日

关键字: 问答 JavaSE java

  • 评论
  • 分享微博
  • 分享邮件

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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章