一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 5146|回复: 9
收起左侧

[编程题] 一个类里面什么时候用private,什么时候用public?

[复制链接] |试试Instant~ |关注本帖
MTC 发表于 2014-10-18 11:45:14 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
  1. package Question4_2;
  2. public class Graph {
  3. private Node vertices[];
  4. public int count;//顶点个数
  5. public Graph() {
  6. vertices = new Node[6];
  7. count = 0;
  8. }
  9. public void addNode(Node x) {
  10. if (count < 30) {
  11. vertices[count] = x;
  12. count++;
  13. } else {
  14. System.out.print("Graph full");
  15. }
  16. }
  17. public Node[] getNodes() {
  18. return vertices;
  19. }
  20. }

  21. 比如上面这个,不用private不行吗?
复制代码
冰冷剃度 发表于 2014-10-18 11:57:09 | 显示全部楼层
能用private的场合都能用public吧,只是保护起来防止误操作,是个编程风格上的问题。
回复 支持 反对

使用道具 举报

天堂在笑 发表于 2014-10-18 12:28:24 | 显示全部楼层
需要保护的一般用private,防止外部对其进行直接的操作~
回复 支持 反对

使用道具 举报

sotony 发表于 2014-10-20 10:07:55 | 显示全部楼层
对于规范来说,类变量都尽量private.很少见是public的。
回复 支持 反对

使用道具 举报

sotony 发表于 2014-10-20 10:08:03 | 显示全部楼层
对于规范来说,类变量都尽量private.很少见是public的。
回复 支持 反对

使用道具 举报

Howie 发表于 2014-10-21 12:10:47 | 显示全部楼层
定义为private的变量,其他的类的对象不能直接调用。只能通过get方法进行调用。
回复 支持 反对

使用道具 举报

On_the_way 发表于 2014-10-24 04:23:55 | 显示全部楼层
field很少public,一般会设置两个method来调用或者更新这个field,比如说有个变量foo,那就写两个getFoo() 和 setFoo() 去提取和更新这个变量
回复 支持 反对

使用道具 举报

daihao0310 发表于 2014-10-24 04:38:08 | 显示全部楼层
属性尽可能用private。对于方法来说,如果你不希望其他外部类调用这个方法,那么可要把这个方法声明为private。另外,在singleton设计模式中,构造函数也要被声明为private。
回复 支持 反对

使用道具 举报

chopinsky 发表于 2014-10-28 06:45:24 | 显示全部楼层
其实主要问题是放防止程序很大,有很多继承类的时候,子类使用相同的变量名,结果覆盖或者修改变量的值。这个问题在很多人参与的project里面会是一个很大的bug源。

比较好的方法是对类的所有变量都使用private,然后添加getValue(), setValue()方法,以确保这个类的变量值不会被以外的改变。
回复 支持 反对

使用道具 举报

lqs4188980 发表于 2014-10-28 10:01:31 | 显示全部楼层
OO的原理是消息传递机制,所以对象中的data field一般不应该让外部直接操作,而是使用相应的getter, setter方法访问。而对于方法,当这个方法需要被外部调用作为接口的时候才是public,其他情况的内部辅助方法都是private。另外还有允许package内部共享field和方法应该使用protected
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-10 21:04

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表