代码如下!//: c06:CADSystem.java
// Ensuring proper cleanuppackage c06;
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");
}
}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 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--) 
lines[i].dispose();
super.dispose();
}
public static void main(String args[]) {
CADSystem x = new CADSystem(47);
try
{
//code and exception handling ..
}
finally
{
x.dispose();
}
}
}
大家给看看怎么回事!

解决方案 »

  1.   

    你说的运行没有通过是指什么意思?我这里运行结果是:Shape Constructor
    Shape Constructor
    Drawing Line: 0, 0
    Shape Constructor
    Drawing Line: 1, 1
    Shape Constructor
    Drawing Line: 2, 4
    Shape Constructor
    Drawing Line: 3, 9
    Shape Constructor
    Drawing Line: 4, 16
    Shape Constructor
    Drawing Circle
    Shape Constructor
    Drawing Triangle
    Combined constructor
    CADSystem.dispose()
    Erasing Triangle
    Erasing Circle
    Shape dispose
    Erasing Line: 4, 16
    Shape dispose
    Erasing Line: 3, 9
    Shape dispose
    Erasing Line: 2, 4
    Shape dispose
    Erasing Line: 1, 1
    Shape dispose
    Erasing Line: 0, 0
    Shape dispose
    Shape dispose
      

  2.   

    没有问题啊,我放eclipse里能得到楼上的打印结果。