2012-03-24 20 views
1

これはJavaについての非常に基本的な質問です。私はどこかで、サブクラスのコンストラクタで最初にスーパークラスのコンストラクタが暗黙的に呼び出されていると読んでいます。しかし、私は詳細についてそれを読むために、ドキュメントへの参照を見つけることができませんでした。誰かがこのリファレンスを提供してもらえますか?ここで継承されたクラスのコンストラクタの呼び出し

super sub文字列を出力する、私が話しているかの例です:

class SuperClass { 
    static String s = ""; 
    protected SuperClass() { s += "super "; } 
} 

public class SubClass extends SuperClass { 
    private SubClass() { s += "sub"; } 
    public static void main(String[] args) { 
     new SubClass(); 
     System.out.println(s); 
    } 
} 

答えて

7

は、Javaでのコンストラクタのをオーバーライドありません - 彼らはで開始する多形と呼ばれていません。

しかし、各コンストラクタは、コンストラクタ本体の最初の行としてsuper(...)で(暗黙的(パラメータなし1を呼び出す)または明示的に、スーパークラスのコンストラクタを呼び出すために持っています - 、またはチェーンを別のコンストラクタに同じクラス内コンストラクタ本体の最初の行としてthis(...)で。チェーンコンストラクタは、コンストラクタ本体の残りの部分の前に実行されます。

詳細はsection 8.8.7 of the Java Language Specificationを参照してください。

+0

あなたは正しいです、私は "への文言を変更しましたあなたの答えを読む前に、サブクラスのコンストラクタを作成してください。 –

関連する問題