构造函数中的super()

我正在阅读一些代码。 在构造函数中它有super()但是类实现了接口,当然它没有构造函数。 那么它指的是哪个super()?

public class BoundingBox implements IBoundingVolume { public BoundingBox() { super(); mTransformedMin = new Number3D(); mTransformedMax = new Number3D(); mTmpMin = new Number3D(); mTmpMax = new Number3D(); mPoints = new Number3D[8]; mTmp = new Number3D[8]; mMin = new Number3D(); mMax = new Number3D(); for(int i=0; i<8; ++i) { mPoints[i] = new Number3D(); mTmp[i] = new Number3D(); } } public interface IBoundingVolume { public void calculateBounds(Geometry3D geometry); public void drawBoundingVolume(Camera camera, float[] projMatrix, float[] vMatrix, float[] mMatrix); public void transform(float[] matrix); public boolean intersectsWith(IBoundingVolume boundingVolume); public BaseObject3D getVisual(); } 

super()指的是扩展class (不是实现的接口)。 在这种情况下, Object

所以它会调用Object的构造函数(什么都不做)

Super正在引用扩展类。 默认情况下它是Object类。 Object中的构造函数不执行任何操作。 换句话说,您可以删除此行,因为它不是必需的。

还请注意Oracle对此主题的评论:

如果构造函数未显式调用超类构造函数,则Java编译器会自动插入对超类的无参数构造函数的调用。 如果超类没有无参数构造函数,则会出现编译时错误。 对象确实有这样的构造函数,因此如果Object是唯一的超类,则没有问题。

资料来源: http : //docs.oracle.com/javase/tutorial/java/IandI/super.html

super调用扩展类的构造函数。 Java中的所有类都派生自Object 。 此外,如果类的作者没有为该类创建构造函数,则会创建一个不执行任何操作的默认构造函数。

在您的情况下, super调用Object的默认构造函数。

如果您想了解有关Object更多信息,可以在此处阅读Object.java的源代码。