Je lis un code. Dans le constructeur, il a super () mais la classe implémente une interface qui n'a bien sûr pas de constructeur. À quel super () fait-il référence?
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()
fait référence à class
étendu (pas une interface implémentée). Qui dans ce cas est Object
Il appellera donc le constructeur dans Object
(ce qui ne fait rien)
Super fait référence à la classe étendue. Par défaut, c'est la classe Object. Le constructeur dans Object ne fait rien. En d'autres termes, vous pouvez supprimer cette ligne car elle n'est pas nécessaire.
Veuillez également noter ce que dit Oracle à ce sujet:
Si un constructeur n'appelle pas explicitement un constructeur de superclasse, le compilateur Java insère automatiquement un appel au constructeur sans argument de la superclasse. Si la superclasse n'a pas de constructeur sans argument, vous obtiendrez une erreur au moment de la compilation. Object a un tel constructeur, donc si Object est la seule superclasse, il n'y a pas de problème.
Source: http://docs.Oracle.com/javase/tutorial/Java/IandI/super.html
super
appelle le constructeur de la classe étendue. Toutes les classes de Java dérivent de Object
. De plus, si l'auteur d'une classe ne crée pas de constructeur pour la classe, un constructeur par défaut est créé qui ne fait rien.
Dans votre cas, super
appelle le constructeur par défaut de Object
.
Si vous souhaitez en savoir plus sur Object
, vous pouvez lire le code source de Object.Java
ici .