THINKING IN JAVA的例子
public class flower{
...
flower(int petals){
...
}
flower(String s){
...
}
flower(String s,int petals){
this(petals);
this.s = s;
}
flower()
{
this("hi",47);
}
public static void main(String[] args){
flower x = new flower();
}
}
书上说该例子说明,尽管可以用this调用一个构建器,但不可调用两个
即这一段:
flower(String s,int petals){
this(petals);
this.s = s;
}
请问是啥意思?this(petals)与this.s = s啥区别?
先后有关系吗?
写成
this.petals =petals与this(s)
可以吗?
虚心求教!!

解决方案 »

  1.   

    就是调用flower(String s)这个构建器
    用this调用构建器时必须在一个构建器的第一行,目的是减少重复代码
      

  2.   

    this(petals)与this.s = s啥区别?------------------
    this(petals)就是调用本类中的构造函数
    flower(String s){
    ...
    }
    this.s = s就是赋值操作不可调用两个,是说,不能调用两次this()函数.
      

  3.   

    你所说的,都是可以通过编译的,但逻辑上,就要以你的目的而定了.
    this(petals);意思就是,调用带本类的带单个int参数的构造函数,即调用flower(int petals)
    this.s = s;意思就是,当前函数的s变量引用传入的参数s,简单的讲:参数s给函数的s赋值.首先你要记得this的两个用法:
    1. (相当于C++) 引用当前活动对象;
    2. this(...) 指的是调用本类的另外一个构造器.
      

  4.   

    编译一下。看看输出结果:.............主函数中 flower x = new flower(); 首先调用了无参数的构造器,而这个构造器里执行了 this("hi",47);这一语句, 就等同于调用了 Flower(String s, int petals)构造器,而在Flower(String s, int petals)构造器里又执行this(petals);这一语句,而这个语句又等同于调用Flower(int petals)构造器。因而Constructor w/ int arg only, petalCount= 47最先打印出来。接着打印其他构造器里的内容..............