代码如下!
- Java code
//: 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(); } }}
大家给看看怎么回事!
------解决方案--------------------
你说的运行没有通过是指什么意思?
我这里运行结果是:
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
------解决方案--------------------
没有问题啊,我放eclipse里能得到楼上的打印结果。