2011-11-08 6 views
22

私は、クラス "ParentClass"を拡張する "ChildClass"クラスを持っています。親クラスのコンストラクタを完全に置き換えるのではなく、まず親クラスのコンストラクタを呼び出してから、余分な作業をしたいと思います。Javaの子クラスで親コンストラクタを使用

デフォルトでは、親クラスの0引数コンストラクタが呼び出されると思います。これは私が望むものではありません。私は引数で呼び出すコンストラクタが必要です。これは可能ですか?

私は

this = (ChildClass) (new ParentClass(someArgument)); 

を試みたが、あなたは「これを」変更することはできませんので、それは動作しません。

+2

Javaの['super'](http://download.oracle.com/javase/tutorial/java/IandI/super.html)。 – birryree

+0

解決方法を確認してください:http://leepoint.net/notes-java/oop/constructors/constructor-super-example.html – Raihan

答えて

48

子のコンストラクタ内から親のコンストラクタを "super"で参照できます。

public class Child extends Parent { 
    public Child(int someArg) { 
     super(someArg); 
     // other stuff 
    } 
    // .... 
} 
+2

Aha、ありがとう。私は本当に私が敷設しているそのJavaプログラミングの本を読んで、それは私のような愚かな質問をするのを止めるだろう。 –

+6

親のコンストラクタへのsuper()での呼び出しは、子コンストラクタのFIRST呼び出しである必要があります。 – bakoyaro

5

スーパーキーワードを使用してください。

public ChildClass(...) { 
    super(...); 
} 
9

特定の親クラスのコンストラクタを呼び出すためには、子クラスのコンストラクタ本体の最初のステートメントとしてsuper(param1, param2, ...)を置きます。

関連する問題