现有Square类,对于面积计算到底要不要使用setArea,现有三种方案,请问哪一种好?
第一种:public class Square {
public Squre(double sideLength) {
this.sideLength = sideLength;
area = 0;
}
public void setArea() {
area = Math.pow(sideLength, 2);
}
public double getArea() {
return area;
}
private double sideLength;
private double area;
}第二种:public class Square {
public Squre(double sideLength) {
this.sideLength = sideLength;
area = 0;
}
public double getArea() {
area = Math.pow(sideLength, 2);
                return area;
}
private double sideLength;
private double area;
}第三种:public class Square {
public Squre(double sideLength) {
this.sideLength = sideLength;
area = 0;
}
public double getArea() {
return = Math.pow(sideLength, 2);
}
private double sideLength;
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【wenzee】截止到2008-07-30 18:20:03的历史汇总数据(不包括此帖):
    发帖的总数量:26                       发帖的总分数:1285                     每贴平均分数:49                       
    回帖的总数量:37                       得分贴总数量:10                       回帖的得分率:27%                      
    结贴的总数量:25                       结贴的总分数:1235                     
    无满意结贴数:1                        无满意结贴分:15                       
    未结的帖子数:1                        未结的总分数:50                       
    结贴的百分比:96.15 %               结分的百分比:96.11 %                  
    无满意结贴率:4.00  %               无满意结分率:1.21  %                  
    值得尊敬

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=wenzee
      

  2.   

    public class Square {
        public Squre(double sideLength) {
            this.sideLength = sideLength;
        }
        public double getArea() {
            return Math.pow(sideLength, 2);
        }
        private double sideLength;
    }
      

  3.   

    第一中好
    控制起来更方法些。。
    比如想设置面积,但并不一定要得到。
    set。get。
      

  4.   

    当然不能要了.
    面积是根据边长等内部属性计算出来的,而不是外面通过调用set方法设置的.
      

  5.   

    如果用户不调用set方法,那get到的就是错误的,这是不允许的.
      

  6.   

    我晕 怎么习惯把变量定义在类的下面...
    当然得要了  不然实例化后 因为你吧area定义为private,怎么操作area变量?
    而且还有一个问题 public Squre(double sideLength) 应该是构造函数吧?那方法名应该和类名一样啊  要不是构造函数的话  就要返回一个值
           
      

  7.   

    第一种,以后想改算法. getArea()不用改.
    public double getArea() {
            return area;
        }
      

  8.   

    class Square {
    private double sideLength;
        private double area;
            public Square(double sideLength) {
            setSideLength(sideLength);
            setArea();
        }    public double getArea() {
            return area;
        }
        
        public double getSideLength (){
         return sideLength;
        }
        
        public void setSideLength (double sideLength){
         this.sideLength = sideLength;
        }
        
        public void setArea (){
         this.area = Math.pow(getSideLength(), 2);
        }
        
    }
    public class TestSquare {
    public static void main (String args[]){
    Square square = new Square (2.0d);

    System.out.println("Side Length: "+ square.getSideLength() +"\nSquare: "+ square.getArea());
    }
    }
    Side Length: 2.0
    Square: 4.0
      

  9.   

    你的题目和你的例子似乎
    set函数要有,是设属性值的(sideLength才是Square的属性,所以是要有SetSideLength(),而没必要setArea());public class Square {
        public Squre(double sideLength) {
            this.sideLength = sideLength;
            area = 0;
        }
        public double getArea() {
            return = Math.pow(sideLength, 2);
        }
        private double sideLength;
        
        //设置sideLength,这样就不必每次都要new 一个Square了
        public void setSideLength(double len){
            this.sideLength = len;
        }    //察看当前的sideLength
        public double getSideLength(){
            return this.sideLength;
        }
    }
      

  10.   

    以上那段代码就回答了5#的问题了 不是通过外部参数通过setArea方法设置area的值了  而是setArea方法调用getSideLength方法实现的
      

  11.   

    当然如果不要构造函数的话(那方法名为什么大写呢...所以还应该是构造函数)  那就用Square方法返回一个area值就可以了,
    setArea方法就和Square方法功能重复了 就可以不要了
      

  12.   

    为什么不是 SetSideLength?我觉得面积可以根据边来算,把 length 设为私有的不就行了。个人支持第三个。
      

  13.   

    看来大部分人认为第三种比较好,
    justinavril 看的真仔细,Square函数为书写错误。
    应该是这样的public Square(double sideLength) {
         this.sideLength = sideLength;
    }
      

  14.   

    感觉这个比较好~
    边长是它的固有属性,而面积只是边长的延伸
    也就是通过边长得到的,因此就不需要把面积定义为它的一个属性了吧
    如果要获得它的面积,就可以调用getArea()方法了
      

  15.   

    构造函数里干吗将area=0;加进去呢..
    这个在外面不是也没有用到,这个可以去掉了
      

  16.   

    其实把sideLength看成唯一的私有变量也行  那就不要setArea  用Square函数取代setArea
    要是把area也看成私有变量  那就用我的那段代码  
      

  17.   

    public class Square {
        public Square(double sideLength) {
            this.sideLength = sideLength;
        }
        public double getArea() {
            if(area == 0) {
                area = sideLength * sideLength;
            }
            return area;
        }
        private double sideLength = 0;
        private double area = 0;
    }这样 area 只需要计算一次就可以了,以后再使用时就不需要再进行计算了。