フィールドのカプセル化
「フィールドのカプセル化」機能は、指定したフィールドをprivateにすると共に、このフィールドへのアクセスをチェックし、GetterおよびSetterを経由していないものがあれば書き換えるリファクタリング機能です。
では、この機能を試してみましょう。ソースエディタまたはパッケージエクスプローラでHelloStaffクラスのageフィールドを選択状態にします。
メニューの[リファクタリング(T)]‐[フィールドのカプセル化(S)]を実行します。
「フィールドのカプセル化」ウィンドウが表示されます。今回は変更しないので、このまま[プレビュー(W)]をクリックします。
なお、「setterとgetterの使用」を「フィールド参照の保持」に変更することも可能です。また、今回の対象であるageフィールドにはすでにsetterとgetterがあるため選択不可になっていますが、存在しない場合はこの処理で自動作成することができるので、その挿入位置やアクセス修飾子を設定します。また、異なる名前のsetterやgetterを作成することもできます。
すると、プレビュー画面に切り替わります。今回の場合も、スーパークラスとサブクラスのそれぞれに変更が加わるので、[実行される変更]で1つずつ確認しましょう。
まず、サブクラスであるHelloEmpのkyuhukin()メソッドの内容です。ageフィールドを直接参照している2カ所がgetter経由に書き換えられることが分かります。
次に、[実行される変更]でスーパークラスであるHelloStaff.javaをクリックします。HelloStaffクラスのコンストラクターのageフィールドを直接設定している箇所がsetter経由に書き換えられること、ageフィールドのアクセス修飾子がprotectedからprivateに変わることが分かります。確認できたら[OK]をクリックしてカプセル化を実行します。
エディタービューに戻るので、プレビューのとおりに2つのクラスが変更されていることを確認します。
「フィールドのカプセル化」ウィンドウのところで説明したとおり、「フィールドのカプセル化」処理はsetterとgetterが存在しない場合に自動作成することができます。その意味では、前回説明した「GetterおよびSetterの生成機能」を含んでいるとも言えますが、細かい指定はできるので、先に「GetterおよびSetterの生成機能」で生成しておく方が良いでしょう。
- 修正履歴
-
- 2010/05/14 13:26 「メンバーのソート機能」の説明において、「可視性の⾼い順」の記述に誤りがありましたので、本文および説明画面を差し替えました。
この記事は参考になりましたか?
- Eclipse 3.4からはじめるIDE入門連載記事一覧
-
- Eclipse 3.4のコード生成&リファクタリング機能(続)~Eclipse 3.4入門...
- Eclipse 3.4のコード生成&リファクタリング機能 ~Eclipse 3.4入門~
- Eclipse 3.4を使ったデータベース操作 ~Eclipse 3.4 入門~
- この記事の著者
-
平野正喜@ランドッグ・オーグ(ヒラノマサキ)
フリーのIT系執筆者&講使(※)の「ランドッグのマウ」こと平野正喜(HIRANO Masaki)です。【略歴】 1962年札幌市生まれ。今で言うIT企業のシステムエンジニア、プロジェクトリーダー、システムコンサルタント、採用担当などを経て独立し、2002年11月にランドッグ・オーグ平野正喜事務所(h...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア


![図28:[リファクタリング]‐[フィールドのカプセル化]を実行](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-28s.gif)
![図29:[プレビュー]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-29s.gif)

![図31:スーパークラスの変更を確認して[OK]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/4088/9-31s.gif)