本帖最后由 u012041238 于 2014-05-12 16:12:58 编辑

解决方案 »

  1.   

    首先,你得理解Java“构造函数”的概念,在这里就不多说了。
    可以参看:http://zhidao.baidu.com/link?url=JNBTZ15XvwnTj8J0qMg8-P433WfYIX-DZXooh7lZEPAREJzePAGpQ7VLDk8GiLQ_g928Rk2oY5gXnFzEZJ0B1q具体回答你的问题:
    1. 这些构造方法有什么用呢?
    在第一段代码里有空的构造函数Commodity()和非空的构造函数Commodity(String name, Integer count, Double price,String re),意思就是,在你要用到Commodity这个类的时候,你就要初始化它,怎么初始化?就是通过new出来,比如
    Commodity  commodity  = new Commodity ();
    那此时的commodity  的各个属性都是默认的值。但是如果用户通过页面,选择了某个商品,比如此商品的各个值是:
    name="iPhone"
    count=1
    price=5800.0
    re="苹果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 re) {
            this.name = name;//赋值
            this.count = count;
            this.price = price;
            this.re = re;
             
            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 re)又有什么作用? 
    见上面1解释。我CSDN回答的第一个问题当纪念吧
      

  2.   

    接分。。
    构造方法各种书,百度谷歌上也是一搜一大把吧。。
    你连基本的关于构造方法的都不知道,那更无法解释super以及overload是怎么回事了。。
      

  3.   

    我觉得有必要在全版强推THINKING IN JAVA