www.pudn.com > TIJc04.rar > Flower.java


//: c04:Flower.java 
// Calling constructors with "this." 
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002 
// www.BruceEckel.com. See copyright notice in CopyRight.txt. 
import com.bruceeckel.simpletest.*; 
 
public class Flower { 
  static Test monitor = new Test(); 
  int petalCount = 0; 
  String s = new String("null"); 
  Flower(int petals) { 
    petalCount = petals; 
    System.out.println( 
      "Constructor w/ int arg only, petalCount= " 
      + petalCount); 
  } 
  Flower(String ss) { 
    System.out.println( 
      "Constructor w/ String arg only, s=" + ss); 
    s = ss; 
  } 
  Flower(String s, int petals) { 
    this(petals); 
//!    this(s); // Can't call two! 
    this.s = s; // Another use of "this" 
    System.out.println("String & int args"); 
  } 
  Flower() { 
    this("hi", 47); 
    System.out.println("default constructor (no args)"); 
  } 
  void print() { 
//! this(11); // Not inside non-constructor! 
    System.out.println( 
      "petalCount = " + petalCount + " s = "+ s); 
  } 
  public static void main(String[] args) { 
    Flower x = new Flower(); 
    x.print(); 
    monitor.expect(new String[] { 
      "Constructor w/ int arg only, petalCount= 47", 
      "String & int args", 
      "default constructor (no args)", 
      "petalCount = 47 s = hi" 
    }); 
  } 
} ///:~