特定のメンバー変数が宣言されているアクティビティから継承する場合、継承を実行するサブクラスでこれらのメンバー変数にどのようにアクセスしますか?Javaで継承したクラス変数へのアクセス
答えて
public
またはprotected
メンバー名は、任意のコンストラクタまたはstatic
メソッドまたはイニシャライザからthis.memberName
経由でアクセスできます。
private
またはパッケージレベルのメンバー(別のパッケージのサブクラスからアクセスされる)に直接アクセスすることはできず、public
getterなどの特権のないインターフェースを介してアクセスする必要があります。
メンバーがprivate
と宣言されている場合、またはデフォルト(パッケージ)アクセスで宣言されていて、サブクラスが別のクラスにある場合、変数にアクセスすることはできません。アクセサーが提供されていれば、それを使うことができます。それ以外の場合はアクセスできません。
(あいまいはありません場合this.var
、または単にvar
)のメンバーは、彼らは自分自身のクラスで宣言されたかのようにあなたがそれらにアクセス、protected
またはpublic
を宣言した場合。スーパークラスと同じ名前のサブクラスにメンバーがある場合は、super.var
を使用してスーパークラス変数にアクセスできます。
ダウンボッターの説明に注意してください。 –
説明できないダウン投票に対抗するため+1。 – mre
class A {
protected int a = 3;
}
class B extends A {
protected int b = 2;
void doIt() {
System.out.println("super.a:" + super.a);
System.out.println("this.b: " + this.b);
}
}
他によって述べたように、パブリックおよび保護フィールドは、サブクラスからthis.field
を介してアクセスすることができます。パッケージプライベートフィールドにも同じ方法でアクセスできますが、サブクラスが親パッケージと同じパッケージに含まれている場合に限ります。
このようにプライベートフィールドにアクセスすることはできませんが、セキュリティ設定で許可されている場合は、Java reflectionを使用してアクセスできます。通常、プライベートメンバーは通常プライベートな理由からプライベートであることが推奨されていますが、コードテストの目的でプライベートクラスメンバーにアクセスするなど、状況によっては便利です。このように反射を使用する方法については、the answers to this questionを参照してください。
- 1. ハイブリッド継承の派生クラスから基本クラスの変数へのアクセス
- 2. クラス継承java
- 3. 継承クラスのRubyとクラス変数
- 4. 継承したクラス関数の参照
- 5. JavaScriptからの変数アクセス継承メソッド
- 6. Pythonで継承されたクラス変数の変更
- 7. Java ORM:複数(継承)継承
- 8. テンプレートによる継承(サブクラスメンバー関数内で親クラスの変数とオブジェクトにアクセス)
- 9. Javaの包囲クラスから継承した内部クラス
- 10. Java静的変数と継承とメモリ
- 11. インスタンス変数をオーバーライドするJava継承
- 12. 継承:サブクラスの基本クラスフィールドへのアクセス
- 13. 継承エラー後のメソッドへのアクセス
- 14. WCFの継承オブジェクトプロパティへのアクセス方法
- 15. Javaのクラスと継承 - どうしたのですか?
- 16. deepcopy/cloneの基底クラスへの継承
- 17. 継承 - インスタンス変数
- 18. as3継承変数
- 19. 子クラス関数の親クラス継承
- 20. Android:startActivity()を継承したクラスで表示
- 21. TypeScriptでの複数クラス継承
- 22. UML - クラス継承、あなたは何を継承しますか?
- 23. Cでの継承クラスからの変数の取得#
- 24. Python QtGui:クラス間での変数の継承
- 25. SASSの変数と継承
- 26. C#:継承イベントの問題 - 継承したクラスのイベントは常にnullです
- 27. Javascriptクラス継承
- 28. C++クラス継承
- 29. 基本フォームから継承されたフォームのコンポーネントへのアクセス
- 30. MultiLevel継承、クラスCはクラスAを継承できますか?
また、名前の競合がないことを確認してください。予期しない動作に陥っている場合は、http://java.sys-con.com/node/46344 – jefflunt