Javaの – アクセシビリティ

2017年11月

アクセスの概念

アクセスの概念は、(通常と呼ばれます カプセル化)特定の要素(メソッド、クラス、...)に、より一般的に、特定のデータへのアクセスを制限するクラスの設計者の能力を定義しますか。


実際には、クラスはいくつかのプログラマによって再利用されるために(時には道を支払う)放送予定されています。今では、クラスのユーザーは、設計者が意図した方法でそれを使用していることが一般的に望ましいです
それがあること。したがって、その中の特定の要素へのアクセス(またはインスタンス)を制限することが可能です
ラベルを関連付けます。

データメンバの保護

カプセル化を定義することです
明確にするデータメンバとメソッドのラベル
彼らは、他のクラスやないからアクセスしている場合...


このように、データメンバーは、標識しました プライベート 直接他のクラスの方法で操作することはできません。
したがって、これらのデータメンバを処理できるように、(この場合はあなたの中に)クラスの作成者は、標識された特別なメソッドを提供する必要があります 公衆, データを操作します。

  • データメンバにアクセスするためのメンバ関数が呼び出されます アクセサ,

時々 ゲッター (起源の英語名称)
  • データメンバを変更するためのメンバ関数が呼び出されます ミューテータ, 時々 セッター (起源の英語名称)



通常と呼ばれます "インターフェース" ユーザーを許可するすべてのメソッド
クラスを操作します。

アクセスレベル

Javaは、インスタンス変数へのアクセスの4つのレベルを定義します
(データメンバ)とメソッド:

  • 公衆 :メンバー 公衆 提供されています

どこでも制限なし。メインクラスのようないくつかのクラス( )アプリケーションを実行する(パブリック宣言する必要があります...)
  • 保護されました :メンバー 保護されました保護されました)のみパッケージ内のクラスとそのサブクラスに利用可能です
  • プライベート :メンバー プライベートプライベート)のみ、それが宣言されたクラス内で利用可能です。これらの項目は、特定の方法と呼ばれるアクセサとミューテータを使用して処理することはできません
  • "優しいです" :要素があります 優しいです デフォルトでは、 (この名前は公式のものではなく、借りています

C ++)で提供されています
パッケージのクラスのみ。

アクセサの概念

アクセサは、与えられた保護されたメンバーの内容を取得する方法です。その機能を実行するためのアクセサ:

  • 戻るには、変数の型の型を返すことでなければなりません
  • 引数を持つ必要はありません


命名規則は、我々がそうする接頭辞でアクセサの名前をpréferrentielleし始めるということです 得ます, その主な機能をハイライトします。


最も単純な形式に縮小アクセサの構文は次のようになります。



公共MyClassクラス{
公共の静的な無効メイン(文字列[] ARGV){
新しいMaSecondeClasse();

}
}

{クラスMaSecondeClasse
プライベートTypeDeMaVariableてmyVariable。

公共TypeDeMaVariable getMaVariable(){
myVariable変数を返します。

}
}
前の例では、データメンバアクセッサの最小 年齢 以下のようになります。



TOTOクラス{
プライベートint型の年齢;

公共INT getAge(){
年齢を返します。

}
}

ミューテーターの概念

セッターメソッドは、指定された保護部材の内容を変更する方法です。セッターは、その機能を果たすために:

  • データメンバに割り当てるパラメータ値として持っている必要があります。パラメータは、データメンバの型である必要があります
  • (それは最も単純な形で持っている値を返す必要はありません 空隙


命名規則は、我々は接頭辞でそうpréferrentielleミューテーターの名前を行うために始めるということです セット.


最も単純な形に還元さミューテータの構文は次のようになります。



MyClassクラス{
プライベートTypeDeMaVariableてmyVariable。

公共ボイドsetMaVariable(TypeDeMaVariable myValue){
myVariable変数= myValue。

}
}
前の例では、データ部材ミューテータの最小 年齢 以下のようになります。



TOTOクラス{
プライベートint型の年齢;

公共のボイドsetAge(int型nouveauAge){
年齢= nouveauAge。

}
}



そのような機構の主な利点は、それが提供するデータメンバーの有効性を制御することです。実際、それはデータ・メンバに割り当てられている値をテストすることができる(そして賢明)であり、それは一つ前の引数の値の妥当性検査を行うということですデータメンバに割り当てます。
トトの年齢を確認例えば缶以上のミューテータは正しいです
(これは、トトは、200年以上生きることはできないことを考慮すべき...それは遺伝学の進歩ああ...バグが表示される場合がありますこのような仮定であります!)。



TOTOクラス{
プライベートint型の年齢;

公共INT setAge(INT nouveauAge){
(nouveauAge場合 < 200){
年齢= nouveauAge。

1を返します。

}
それ以外の戻り0;

}
}

参照してください。


この記事(PDF)をダウンロード
この記事をダウンロードする(PDF