2013-03-04 9 views
20

私はいくつかのコードを読んでいます。コンストラクタには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(); 
} 
+1

それは、スーパークラスのコンストラクタに呼びかけています。この場合 - オブジェクト。 – user

+3

Objectクラスを参照しています。 –

+0

これはjava.lang.Objectコンストラクタを呼び出します。 –

答えて

34

super()拡張class(ない実装インタフェース)を指します。 Object

この場合、どれだから、拡張クラスのコンストラクタを呼び出しsuper

+1

Javaでは、すべてのクラスは別のクラスから派生していない限り、Objectから派生しています。したがって、super()はObjectクラスのコンストラクタを参照します。 –

+1

実際には、* ALL * JavaクラスはObjectから派生しています。それらが別のクラスを拡張する場合、それはより大きな階層を持つことを意味します。 – cowls

+0

hmmm、なぜ誰かがObject()のコンストラクタを参照するでしょうか? super()でこの行を削除しても効果はありませんか? – Nazerke

1

(何もしないもの)Objectでコンストラクタを呼び出します。 JavaのすべてのクラスはObjectから派生しています。さらに、クラスの作成者がクラスのコンストラクタを作成しない場合、何もしないデフォルトのコンストラクタが作成されます。

superは、デフォルトのコンストラクタObjectを呼び出しています。

Objectについて詳しくは、Object.javahereのソースコードをご覧ください。

13

スーパークラスが拡張クラスを参照しています。デフォルトではObjectクラスです。 Objectのコンストラクタは何もしません。言い換えれば、必要でないので、この行を削除することができます。

コンストラクタを明示的にスーパークラスのコンストラクタを呼び出していない場合は、Javaコンパイラが自動的にスーパークラスの引数なしのコンストラクタへの呼び出しを挿入します。

また、Oracleは、このトピックについての言っていることに注意してください。スーパークラスに引数のないコンストラクタがない場合は、コンパイル時エラーが発生します。 Objectにはこのようなコンストラクタがあるため、Objectが唯一のスーパークラスであれば問題ありません。

出典:http://docs.oracle.com/javase/tutorial/java/IandI/super.html

関連する問題