public class ConstDestProp {
	public static void main(String[] args) {
		System.out.println("first creation...");
		new C2();
		System.gc();

		System.out.println("second creation...");
		new C2(42);

		System.out.println("third creation...");
		new C2(3.14);
	} //main()
} //class ConstDestProp

class C1 {
	public C1(int i) {
		System.out.println("constructor of C1 exectued with param i="+i);
	} //C2(int)

	public C1() {
		System.out.println("constructor of C1 exectued");
	} //C1()

	public void finalize() {
		System.out.println("destructor of C1 executed");
	} //finalize()
} //class C1

class C2 extends C1 {
	public C2() {
		System.out.println("constructor of C2 exectued");
	} //constructor

	public C2(int i) {
		super(i++);
		System.out.println("constructor of C2 exectued with param i="+i);
	} //constructor

	public C2(double d) {
		System.out.println("constructor of C2 exectued with param d="+d);
	} //constructor

	public void finalize() {
		System.out.println("destructor of C2 executed");
	} //finalize()
} //class C1