我们在进行javaWeb变成的时候,在基础bean(持久化bean)里面的成员变量(属性值)一般都是用private修饰,然后提供get、set方法。我知道的这样的做法目的:1.易于封装,封装一些判断之类的。2.其他类不能直接得到,必须get、set得到或者修改值。我想问的是,如果一个类中的成员变量,不需要封装,就是按照数据库里面设置的类型传值,没有其他约束。这种情况下,我可不可以把成员变量,直接用private修饰,不提供get、set方法。要想得到类中的某个属性,就直接aa.name 、修改就是aa.name = dog ; (aa为类名)这样行不行。如果不行,能跟我讲一下弊端吗?

解决方案 »

  1.   

    private修饰在类外部是无法直接通过 类.属性 获取和修改的。
      

  2.   

    你描述的有很多问题:1私有变量 不能通过类名.变量名访问 语法错误!
    2.你所描述的基础bean一般都是数据对象,在web应用中肯定不是单例存在的,不同应用线程使用的对象肯定不同,不同用其他的处理数据对象。如果用类名.变量名进行赋值或取值,那么在并发时,多个线程访问时会共享出错。
      

  3.   

    可以这样做
    public class TestBean {
    public final int age; public TestBean() {
    age = 20;
    }
    }
      

  4.   

    不能加颜色的啊
    public class TestBean {
    public final int age; public TestBean() {
    age = 20;
    }
    }
      

  5.   

    还是错了
    应该是构造函数里面赋值
    public class TestBean {
    public final int age; public TestBean(int age) {
    this.age = age;
    }
    }
      

  6.   

    用get/set方法利于以后对这个变量控制。比如get的时候可以统一怎样处理,set的时候又怎么处理
      

  7.   

    不想让bean中的变量给其他类使用,就果断设置成private,并且不提供get、set方法,只有这个类可以使用这个属性了。
      

  8.   

    用private修饰,安全是一方面
    很多框架都是调用这两个方法来实现沟通,这是一种习惯了。
    get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,这用public定义是不能作到的。