的确没有什么坏处。但可扩展性、维护性比较好,如果需要对属性进行取、赋值处理用get和set就好办了,而直接public属性是没有办法作到的。

解决方案 »

  1.   

    java里默认属性都要用privatie
    -----------------------------------
    不是吧,默认是包访问
      

  2.   

    但可扩展性、维护性比较好,如果需要对属性进行取、赋值处理用get和set就好办了,而直接public属性是没有办法作到的。
      

  3.   

    第一,如果你需要对属性做值限制怎么办?比如,属性是一个人的年龄,那么肯定不允许使用所有的整数,这样可以在setter方法中作判断
    第二,如果你需要只读(只写)属性怎么办?只写getter就可以获得一个只读属性
    第三,如果类的内部设计发生变化怎么办?假设,对象不再直接保存年龄,而是改为保存出生日期,如果没有setter,getter就要改变接口,以解所有相关程序,如果使用,就可以在getter里面计算年龄,而不改变类的接口。
    另外,.net中并不是直接暴露属性的,.net对于属性有额外的语法支持,依然是使用setter和getter,只不过形式上比较简单而已!
      

  4.   

    如果是因为如果这个类以后被别人继承后,而他们又不知道你这个Java类里面的属性定义,很容易对这个类的属性进行更改,所以需要放在set和get方法里面管理.
      

  5.   

    Polarislee(北极星)(灌水是我无言的抗议)  说的太正确了!好崇拜啊!!
      

  6.   

    Polarislee(北极星)(灌水是我无言的抗议) ________________________________________________________
    ding !
      

  7.   

    Polarislee(北极星)(灌水是我无言的抗议) 所言极是!学习!
      

  8.   

    如果你能保证这个public以后不发生任何的变化,则没有问题,可以直接使用。后面是但是:public意味着一种承诺,即所有的客户端会直接使用,如果以后你要对这个值做任何的改变(如类型发生变化),所有的使用了这个public的客户端都会被波及。你必须去修改所有的客户端代码。若有
    setter,则只要修改setter即可。这也就是为什么有Vector等一系列老的collection解决方案就算有瑕疵,也得保留的原因,因为有很多的代码已经使用了。
      

  9.   

    treesoft说得对
    如果你能保证,就没问题
    只是一般情况下,要为未来留下后路。
    如果以后你的这个类要增加东西,或者改变一些实现方式,getter,setter方法会让你觉得变化起来容易些。
      

  10.   

    也就是说,如果你不能保证它的不便性,就最好加上两个方法吧。用Eclipse加getter,setter都不用你敲代码的。
      

  11.   

    如果更加细致的分析一下问题的话要先讲到两个概念,首先,类的属性,指的是public,private或protected的各种内部变量;其次,类的性质,性质是由一个属性一个赋值函数和一个取值函数(也就是setter和getter)组成的结构。在所有编程语言中,java是支持面向对象编程最彻底的语言,它会考虑到一个对象的状态,当一个对象被创建之后要不成为可变对象(大部分),要不成为不变对象(比如String,它不提供set、get函数,但是却具有属性)。当需要不变对象的时候(不变模式)可以不设置类的性质,这样客户端找不到相应的getter,setter接口,就会把它当作是一个无状态对象来使用。而当需要用到可变对象的时候只需把可以改变的属性加上setter和getter,客户端就可以通过这些接口干一些他们所想到的事情而不用去费劲的了解哪些属性是可以改变的,哪些属性是不能改变的。