大家好,请教一个类设计问题.
通常情况下
class a{
   public int a;
   public double b;
   
   ....
}这样初始化类的时候
a AA = new a();
AA.a = 4;
AA.b = 4.50;但是现在流行的写法是:
class a{
   private int a;
   private double b;  public seta(int aa){
     this.a = aa;
  }  public geta(){
    return this.a;
  }  public setb(double bb){
    this.b = bb;
  }  public getb(){
    return this.b;
  }}请问二者有什么区别,分别有什么利弊?请详细说明,小弟菜鸟.请不要说得太高深.

解决方案 »

  1.   

    这是封装的一种手法,比较符合OOP的思想。内部成员设置为私有外面不能访问,只能通过公用的方法去访问。在你这个例子不中看不出什么效果。如果业务逻辑复杂一点,如果你要给a赋值的时候,同时要判断a是不是合法,或者要把a限定要0-100之内,那么你就可以在seta里面做控制了,这样的扩展性也会比较好,慢慢你就会体会到了。
    public seta(int aa){ 
        if (aa>100) {
          this.a = 100;
        } else {
          this.a = aa; 
        }
      }