【直接送分】你怎么理解实体类的构造方法呢

【直接送分】你如何理解实体类的构造方法呢?
本帖最后由 u012041238 于 2014-05-12 16:12:58 编辑
请看如下代码
public class Commodity {
private Integer id;//商品编号
private String name;//商品名称
private Integer count;//商品数量
private Double price;//商品单价
private String remark;//商品备注

public Commodity() {

}
public Commodity(String name, Integer count, Double price,
String remark) {
this.name = name;
this.count = count;
this.price = price;
this.remark = remark;
}

}


getter & setter 略

这些构造方法有什么用呢?如果
	
public Commodity() {
super();
}

这样又有什么不同呢?

public Commodity(String name, Integer count, Double price,
String remark) {
this.name = name;
this.count = count;
this.price = price;
this.remark = remark;
}

上面public Commodity(String name, Integer count, Double price, String remark)又有什么作用?
------解决方案--------------------
首先,你得理解Java“构造函数”的概念,在这里就不多说了。
可以参看:http://zhidao.baidu.com/link?url=JNBTZ15XvwnTj8J0qMg8-P433WfYIX-DZXooh7lZEPAREJzePAGpQ7VLDk8GiLQ_g928Rk2oY5gXnFzEZJ0B1q

具体回答你的问题:
1. 这些构造方法有什么用呢?
在第一段代码里有空的构造函数Commodity()和非空的构造函数Commodity(String name, Integer count, Double price,String remark),意思就是,在你要用到Commodity这个类的时候,你就要初始化它,怎么初始化?就是通过new出来,比如
Commodity  commodity  = new Commodity ();
那此时的commodity  的各个属性都是默认的值。

但是如果用户通过页面,选择了某个商品,比如此商品的各个值是:
name="iPhone"
count=1
price=5800.0
remark="苹果5S"

那此时我就可以通过
Commodity  commodity  = new Commodity ("iPhone",1,new Double(5800),"苹果5S");
这样来初始化commodity 了,此时commodity的各个值就是你传进去的参数了。
之后你就可以通过commodity .getName();等得到各个属性的值进行处理:
if("iPhone".equals(commodity .getName()){
      syso("这是苹果公司的产品");
}
等。。。


当然,这种情况你也同样可以
Commodity  commodity  = new Commodity ();
这样初始化,只不过,初始化之后你还要
commodity.setName("iPhone");
commodity.setCount(1);
...
来分别设置属性,太繁琐。。。

所以,构造函数的目的:创建对象同时,进行你想要的操作,包括初始化信息,检查,赋值等。如:
public Commodity(String name, Integer count, Double price,
            String remark) {
        this.name = name;//赋值
        this.count = count;
        this.price = price;
        this.remark = remark;
         
        init();//初始化, 具体方法另外实现
        check();//检查, 具体方法另外实现
    }

2. 这样又有什么不同呢?
Java所有类继承Object类,因你的Commodity类没继承其他类即默认继承Object,所以
public Commodity() {
    super();   
    }
的意思就是:使用父类的构造方法,即:
public Commodity() {
    new Object();   
    }

这样和
public Commodity() {
    
    }
没有区别。

3. 上面public Commodity(String name, Integer count, Double price, String remark)又有什么作用? 
见上面1解释。

我****回答的第一个问题。。。当纪念吧