特定のメンバー変数が宣言されているアクティビティから継承する場合、継承を実行するサブクラスでこれらのメンバー変数にどのようにアクセスしますか?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. Javaのスーパークラス変数を継承クラス
- 2. ハイブリッド継承の派生クラスから基本クラスの変数へのアクセス
- 3. クラス継承java
- 4. 継承のためのソースファイル内のクラスへのアクセス
- 5. 継承クラスのRubyとクラス変数
- 6. Pythonでのクラス変数の継承
- 7. Pythonで継承した親クラスの変数にアクセスする方法は?
- 8. 継承したクラスを継承する
- 9. 継承したクラス関数の参照
- 10. Pythonで継承されたクラス変数の変更
- 11. JavaScriptからの変数アクセス継承メソッド
- 12. クラス変数のPython静的継承
- 13. Java ORM:複数(継承)継承
- 14. PHP継承 - 子クラス間のメソッドへのアクセス
- 15. Java継承:静的変数の混乱
- 16. Javaで変数を使用した継承
- 17. テンプレートによる継承(サブクラスメンバー関数内で親クラスの変数とオブジェクトにアクセス)
- 18. PHPで継承された静的メソッドのクラスからプロパティへのアクセス
- 19. Javaの包囲クラスから継承した内部クラス
- 20. JAVA:ジェネリック型クラスの継承とジェネリック型の継承
- 21. 継承されたクラスのベース変数をオーバーライドします
- 22. TypeScriptクラスは継承されたメソッドへのアクセスを削除できますか?
- 23. クラス継承とインターフェイス継承
- 24. Javaクラスを継承するKotlinクラスもAnyから継承しますか?
- 25. Javaのクラスと継承 - どうしたのですか?
- 26. Djangoの継承 - アクセス子クラスのフィールド
- 27. 継承:サブクラスの基本クラスフィールドへのアクセス
- 28. 継承エラー後のメソッドへのアクセス
- 29. WCFの継承オブジェクトプロパティへのアクセス方法
- 30. 継承された抽象のクラスメンバーへのインスタンスへのアクセス
また、名前の競合がないことを確認してください。予期しない動作に陥っている場合は、http://java.sys-con.com/node/46344 – jefflunt