现有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;
}
第一种: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;
}
解决方案 »
- 文件或文件夹复制
- 关于小球运动路径问题
- 关于静态初始化块(static initialization block)执行先后顺序的一个怪异现象
- JSP中的使用return疑问!~
- 请问在生产者消费者中的一个统一编号的问题。
- Java中如何返回一个字符串数组?&JTextField[][]问题!
- 可以用java程序取得这些东西吗:计算机名,windows登录id,windows登录密码,计算机domain名
- 急问JAVA帮助问题,在线等
- 才开始学习JAVA,遇到一个低级问题,请大家帮忙!!!谢谢!!!
- 急,这个问题怎么解决?
- weblogic用javamail自动发送邮件的问题
- 求一函数:16进制IP字符串转 正常IP字符串
楼主【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
public Squre(double sideLength) {
this.sideLength = sideLength;
}
public double getArea() {
return Math.pow(sideLength, 2);
}
private double sideLength;
}
控制起来更方法些。。
比如想设置面积,但并不一定要得到。
set。get。
面积是根据边长等内部属性计算出来的,而不是外面通过调用set方法设置的.
当然得要了 不然实例化后 因为你吧area定义为private,怎么操作area变量?
而且还有一个问题 public Squre(double sideLength) 应该是构造函数吧?那方法名应该和类名一样啊 要不是构造函数的话 就要返回一个值
public double getArea() {
return area;
}
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
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;
}
}
setArea方法就和Square方法功能重复了 就可以不要了
justinavril 看的真仔细,Square函数为书写错误。
应该是这样的public Square(double sideLength) {
this.sideLength = sideLength;
}
边长是它的固有属性,而面积只是边长的延伸
也就是通过边长得到的,因此就不需要把面积定义为它的一个属性了吧
如果要获得它的面积,就可以调用getArea()方法了
这个在外面不是也没有用到,这个可以去掉了
要是把area也看成私有变量 那就用我的那段代码
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 只需要计算一次就可以了,以后再使用时就不需要再进行计算了。