1 我定义为protected
2 需要有setter和getter
3 嘻嘻

解决方案 »

  1.   

    除非特别情况一定要定义为private并提供accessor否则可能出现你难以预料的问题,尤其是多人协作的时候
      

  2.   

    一般提议是采用private,保持封装性,并提供setter ,getter方法来存取
    定义为protected或者不定义修饰符,可以只提供给这个package内的其他内使用
    而package外的类无法访问这个field
      

  3.   

    我的原则是private,那当然要有要有setter和getter。
    有人有更有创意的想法吗?
      

  4.   

    定义成private 然后再提供getter,setter
      

  5.   

    我个人认为protected不够彻底,同一个package的class还是可以直接访问。一般的方法都是private + setter & getter至于为何如此,我的理解是:这应当是一种惯例,一种编程风格=_=;
    也就是说,private更多的是对于只读field有效,而对于可读写的field,
    这只是为了保持风格的统一。不会造成混乱。那么好了,我提出第二个问题:
    类似数组类型,都有一个length的field,为何这个length是public的呢?
    jdk又是通过什么手段保证它的只读性?嗯……这个问题好像简单了点
      

  6.   

    不管是public 还是private
    有个setter和getter就没错
    不因为别的,就因为习惯嘻嘻
      

  7.   

    好奇怪啊 居然可以有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() {}
    }
      

  8.   

    嗯嗯
    我们对数组作循环的时候
    不是经常写for(int i=0;i<xxxArray().length;i++)
    这样的句子么。
    这个length就是只读的public属性。怎样保证只读的属性呢,其实也简单,final关键字就可以了。
    对于这种需要在初始化时候就确定值的变量,而在以后的生存期内都不
    改变大小的变量,我们完全可以定义为public,反正——你看不到吃不到哦