foo
プライベート インスタンス変数を持つクラスがあるとしますbar
。
baz
ここで、別のクラス、 which を作成しましょうextends foo
。にアクセサメソッドが定義されていない場合、非静的メソッドはの変数にbaz
アクセスできますか?foo
bar
foo
ちなみに、私はJavaで作業しています。
foo
プライベート インスタンス変数を持つクラスがあるとしますbar
。
baz
ここで、別のクラス、 which を作成しましょうextends foo
。にアクセサメソッドが定義されていない場合、非静的メソッドはの変数にbaz
アクセスできますか?foo
bar
foo
ちなみに、私はJavaで作業しています。
いいえ、そのためには使用する必要がありますprotected.
このような質問については、次の Web サイトの表を参照してください: http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html
これらはサブクラスが親から継承し、したがって baz で見られる変数であるため、基本的に public または protected 変数を foo で宣言する必要があります。
子クラスはプライベート メンバーにアクセスできません (これがプライベート アクセス制御の要点です)。
... foo にアクセサメソッドが定義されていない場合は?
アクセサーが必要です。その上、継承に気をつけてください、その var は本当に親にあるべきですか? IS-A チェックを覚えておいてください。
クラスのプライベート変数は、常にそのクラス内にスコープを持ちます。サブクラス間で共有する必要がある場合は、「保護されている」と宣言する必要があります