日期:2014-05-19  浏览次数:20665 次

java编程思想的一个程序大家看看!编译通过!运行没有通过!
代码如下!
Java code

//: c06:CADSystem.java
// Ensuring proper cleanup

package 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里能得到楼上的打印结果。