小散分:有奖问答,题目见内

mefaintII 2003-08-02 01:45:08
恩,工作了快一年,发现很多同事都是浑浑噩噩过日子,学java
知其然不知其所以然,所以想提一些问题,大家回答一下,大虾菜鸟
一起来哦,表客气!

问题1:
在一个public class中,具有一个field:param1
在其他的class中,我们需要对该类中的param1进行读/写
那么,这个field是该定义成private还是public呢?
如果你认为是定义成public,那么还需要有setter和getter么?
...全文
49 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfan246 2003-08-02
  • 打赏
  • 举报
回复
private 用set和get来读写
mefaintII 2003-08-02
  • 打赏
  • 举报
回复
嗯嗯
我们对数组作循环的时候
不是经常写for(int i=0;i<xxxArray().length;i++)
这样的句子么。
这个length就是只读的public属性。

怎样保证只读的属性呢,其实也简单,final关键字就可以了。
对于这种需要在初始化时候就确定值的变量,而在以后的生存期内都不
改变大小的变量,我们完全可以定义为public,反正——你看不到吃不到哦
jigsaw 2003-08-02
  • 打赏
  • 举报
回复
好奇怪啊 居然可以有public的field,却不能修改?
太奇怪了。。。

噢 等下,Float.NaN好像也是public的,可是也不能修改

噢 再等下 看看这个:
public class Strange {
final public int neverChange;

public Strange(int i) {
neverChange = i;
}
}

好像neverChange也不会变?

再等等。。想起来有个叫什么singlton的冬冬?
里面是不是也有个类似的情况?
public class Single {
public static final Single instance = new Single();
private Single() {}
}

。。。。。。
F1in2003 2003-08-02
  • 打赏
  • 举报
回复
不管是public 还是private
有个setter和getter就没错
不因为别的,就因为习惯

嘻嘻
jeary2210 2003-08-02
  • 打赏
  • 举报
回复
我来接分,小弟穷啊
jouny0 2003-08-02
  • 打赏
  • 举报
回复
up
mefaintII 2003-08-02
  • 打赏
  • 举报
回复
我个人认为protected不够彻底,同一个package的class还是可以直接访问。

一般的方法都是private + setter & getter

至于为何如此,我的理解是:这应当是一种惯例,一种编程风格=_=;
也就是说,private更多的是对于只读field有效,而对于可读写的field,
这只是为了保持风格的统一。不会造成混乱。

那么好了,我提出第二个问题:
类似数组类型,都有一个length的field,为何这个length是public的呢?
jdk又是通过什么手段保证它的只读性?

嗯……这个问题好像简单了点
luckyfanjian 2003-08-02
  • 打赏
  • 举报
回复
定义成private 然后再提供getter,setter
acefr 2003-08-02
  • 打赏
  • 举报
回复
我是来旁观di~

活活~~

:P
VVV_lucky 2003-08-02
  • 打赏
  • 举报
回复
我的原则是private,那当然要有要有setter和getter。
有人有更有创意的想法吗?
kaisa001 2003-08-02
  • 打赏
  • 举报
回复
一般提议是采用private,保持封装性,并提供setter ,getter方法来存取
定义为protected或者不定义修饰符,可以只提供给这个package内的其他内使用
而package外的类无法访问这个field
coolmetal 2003-08-02
  • 打赏
  • 举报
回复
除非特别情况

一定要定义为private并提供accessor

否则可能出现你难以预料的问题,尤其是多人协作的时候
Angeller 2003-08-02
  • 打赏
  • 举报
回复
1 我定义为protected
2 需要有setter和getter
3 嘻嘻

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧