2016-09-11 4 views
-3

Javaコンパイラは、最初のステートメントsuper()の後にコンストラクタのインスタンス初期化ブロックをコピーします。 super()は、直接の親クラスのコンストラクタを呼び出すために使用されることはすべてわかっています。コンパイラが自動的にスーパークラスをコンストラクタに追加する親クラスを継承しません。だから、インスタンス初期化ブロックを使用するときにsuper()を追加する理由は何ですか?あなたは常にあなたがそれを初期化する前に、クラスの親を初期化する必要がなぜjavaコンパイラは最初のステートメントsuper()の後にコンストラクタのインスタンスイニシャライザブロックをコピーするのですか?

Image to clear my question

+4

* "私は親クラスを継承しません" *これは 'Object'を拡張します。 – Tom

+0

あなたは私のことを理解していません。クラスの継承はありませんので、super()がどこを指していますか? –

+0

@rajatagarwal **これは決して可能ではありません。 'class'が親を' extend'しない場合、コンパイラは 'extends Object'を追加します。 –

答えて

1

そうでなければ、親のフィールドがであるかの状態見当がつかない。これはsuper()は、他のすべての前に行かなければならないことを意味します。

スーパークラスの継承はありません。

Objectには親がありません。他のすべてのクラスには、親があり、最終的にはObjectから継承されます。

+0

私はそれを持って..私はJavaの初心者です。だから、私はオブジェクトクラスについて知らない。今私はそれを得た。ご回答有難うございます。 オブジェクトクラスについても説明します** Objectクラスは、java bydefaultのすべてのクラスの親クラスです。言い換えれば、javaの最上位クラスです。** –

+0

@rajatagarwal correct。オブジェクトは親を持たない唯一のクラスです。 –

+0

あなたは私に完全なJavaを学ばなければならないいくつかの参考文献を教えてください。 –

関連する問題