2016-04-12 17 views
-5

サブクラスでは、スーパークラスで定義されたsuper()または非プライベートメソッドが、スーパークラスのプライベートメンバーにアクセスするにはどうすればサブクラスに継承されないのですか。サブクラス、プライベートメンバーがインスタンス化されていない、つまり存在しない場合、存在しないものにはどうやってアクセスできますか?サブクラスのインスタンス化時に、スーパークラスのプライベートメンバーもインスタンス化されますか?

+2

はい、もちろんインスタンス化されています。それらは、スーパークラスが正しく機能するために必要な場合があります。 –

+0

はい、もちろんです。 –

+0

あなたは基本的な誤解があります。プライベートはアクセス修飾子です。プライベートメンバー*は継承されます。 – Dave

答えて

2

プライベートフィールドは継承されませんが、存在します。実際にあなたが "継承された"という意味にかかっています.JLS(例えば、8.2)は、サブクラスに関してどのメンバーがメンバーの決議によって参照できるかを参照しています。プライベートメンバーにはは解決できませんが、フィールドはまだ存在します。

サブクラスのインスタンスの状態は、継承チェーン全体で宣言されたすべてのフィールドで構成されます。

+0

返信ありがとうJon、 "継承された"とはどういう意味ですか? ? – Abhishek

+0

@Abhishek:どのような意味で「想定されていますか?」私が言ったように、JLSはそれを使ってそのサブクラスの名前で解決できるメンバーを意味するように見えます(アクセスできないメンバーを解決できます例えば、後でそれを決める)。私はあなたがより多くの詳細について重複した質問へのリンクに従うことを提案する。 –

関連する問題