private 修飾子
ここまで、クラス、クラスメソッド、およびメンバー変数はすべて、public キーワードを使用して宣言しました。これは、他の Apex クラスもそのクラス、メソッド、および変数にアクセスできるようにするアクセス修飾子です。場合によっては、他の Apex クラスからはアクセスできないようにする必要が生じます。このような場合には、private アクセス修飾子でクラス、メソッド、またはメンバー変数を宣言します。
メンバー変数を private として宣言すると、どのメンバー変数を参照または更新可能にするか、また他のクラスでどのように操作されるかを制御できます。これらの private 変数の値を取得して設定するための public メソッドを提供できます。これらの getter および setter メソッドはプロパティと呼ばれ、詳細は「プロパティ構文」で説明します。これらのメソッドを private として宣言するのは、定義されたクラス内でのみコールされ、ヘルパーメソッドである場合です。ヘルパーメソッドは、クラスの動作を表しませんが、ユーティリティ目的で提供されることがあります。
それでは、Fridge クラスを、メンバー変数に private 修飾子を使用するように変更しましょう。
-
Fridge クラスを変更し、両方の変数の修飾子を private に変更します。
1private String modelNumber; 2private Integer numberInStock; - [Quick Save (適用)] をクリックします。
-
開発者コンソールで次のコードを実行します。
1Fridge myFridge = new Fridge(); 2myFridge.modelNumber = 'MX-EO';警告エラー「Variable is not visible: modelNumber」が表示されます。変数 modelNumber は、クラス内からのみアクセスできるようになりました。これが推奨される方式です。 -
変数へのアクセス権を提供するには、値の設定用と値の取得用にコールする public メソッドをそれぞれ新しく定義します。Fridge のクラス本文内に次のコードを追加します。
1public void setModelNumber(String theModelNumber) { 2 modelNumber = theModelNumber; 3} 4 5public String getModelNumber() { 6 return modelNumber; 7} - [Quick Save (適用)] をクリックします。
-
次のコードを実行します。
1Fridge myFridge = new Fridge(); 2myFridge.setModelNumber('MX-EO'); 3System.debug(myFridge.getModelNumber());これは適切に実行されます。setModelNumber メソッドをコールすると文字列が渡され、myFridge インスタンス変数の modelNumber 値に設定されます。getModelNumber メソッドをコールすると、モデル番号が取得され、それが System.debug システムメソッドに渡されてデバッグ出力に書き出されます。