日期:2014-05-20  浏览次数:20871 次

请教一个小问题~```
package   c06;
import   com.bruceeckel.simpletest.*;
import   java.util.*;

class   Shape   {
    Shape(int   i)   {
        System.out.println( "Shape   constructor ");
    }
    void   dispose()   {
        System.out.println( "Shape   dispose ");
    }
}

class   Circle   extends   Shape   {
    Circle(int   i)   {
        super(i);
        System.out.println( "Drawing   Circle ");
    }
    void   dispose()   {
        System.out.println( "Erasing   Circle ");
        super.dispose();
    }
}

class   Triangle   extends   Shape   {
    Triangle(int   i)   {
        super(i);
        System.out.println( "Drawing   Triangle ");
    }
    void   dispose()   {
        System.out.println( "Erasing   Triangle ");
        super.dispose();
    }
}

class   Line   extends   Shape   {
    private   int   start,   end;
    Line(int   start,   int   end)   {
        super(start);
        this.start   =   start;
        this.end   =   end;
        System.out.println( "Drawing   Line:   "+   start+   ",   "+   end);
    }
    void   dispose()   {
        System.out.println( "Erasing   Line:   "+   start+   ",   "+   end);
        super.dispose();
    }
}

public   class   CADSystem   extends   Shape   {
    private   static   Test   monitor   =   new   Test();
    private   Circle   c;
    private   Triangle   t;
    private   Line[]   lines   =   new   Line[5];
    public   CADSystem(int   i)   {
        super(i   +   1);
        for(int   j   =   0;   j   <   lines.length;   j++)
            lines[j]   =   new   Line(j,   j*j);
        c   =   new   Circle(1);
        t   =   new   Triangle(1);
        System.out.println( "Combined   constructor ");
    }
    public   void   dispose()   {
        System.out.println( "CADSystem.dispose() ");
        //   The   order   of   cleanup   is   the   reverse
        //   of   the   order   of   initialization
        t.dispose();
        c.dispose();
        for(int   i   =   lines.length   -   1;   i   > =   0;   i--)