抽象类中的Super()

时间:2017-03-29 14:10:29

标签: java abstract-class super

我有以下程序:

public abstract class geometricFigure {
    private int dim1, dim2;

    public geometricFigure(int dim1, int dim2) {
        super();
        this.dim1 = dim1;
        this.dim2 = dim2;
    }

    public geometricFigure() {
        this.dim1 = 0;
        this.dim2 = 0;
    }
}

我很难理解,参数化构造函数中的super()方法做了什么。我在这里可以看到,这个抽象类并没有扩展任何类,我很难理解它所调用的超类的super()方法。

顺便说一下。此类由另外两个名为Echilateral TriangleCircle的类扩展。

public class echilateralTriangle extends geometricFigure {
    public echilateralTriangle() {
        super(1, 1);
    }

    public echilateralTriangle(int dim1, int dim2) {
        super(dim1, dim2);
    }
}

圈子类:

public class Circle extends geometricFigure {
    public Circle() {
        super(1, 1);
    }

    public Circle(int dim1, int dim2) {
        super(dim1, dim2);
    }
}

1 个答案:

答案 0 :(得分:6)

super调用父类'传递给它的参数的构造函数。在这种情况下,super()会调用父级的无参数构造函数。没有明确声明其父级的类会隐式扩展Object,因此super()会调用Object的默认构造函数,它也会默认执行呼叫被省略了。所以它没有错,只是多余的。