メソッドのプルアップ
最後に、継承クラスでのリファクタリング機能のもうひとつの利用例として、プルアップ機能を説明します。プルアップはプッシュダウンの反対で、サブクラスのフィールドやメソッドをスーパークラスに移動することです。メソッドをプルアップする場合、移動する代わりにスーパークラスにそのメソッドのabstract宣言を追加してオーバライドに変更することもできます。今回は、先ほどHelloEmpクラスにオーバライドで作成したtoString()メソッドをHelloStaffクラスに移動してみましょう。
パッケージ・エクスプローラーで[HelloEmp]クラスの[toString()]を選択して[リファクタリング(T)]-[プルアップ(U)]を実行します。
![図49:[toString()]を選択して[リファクタリング]-[プルアップ]を実行](http://cz-cdn.shoeisha.jp/static/images/article/3930/8-49s.gif)
「プルアップ」ウィンドウが表示されるので、宛先が「hello1.HelloStaff」であること、メンバー[toString()]のチェックボックスがオンになっていること、アクションが[プルアップ]になっていることを確認して、[次へ(N)]をクリックします。
移動する代わりに、スーパークラスにそのメソッドのabstract宣言を追加してオーバライドに変更したい場合は、[アクションを設定(I)]をクリックして「アクションの設定」ウィンドウを表示し、[選択したメンバーのアクション(A)]を[宛先でabstractを宣言]に変更します。
サブクラス内の除去するメソッドを選択するウィンドウに切り替わるので、確認して[次へ(N)]をクリックします。
プレビュー画面に切り替わります。今回の場合も、スーパクラスとサブクラスのそれぞれに変更が加わりますので、[実行される変更]で1つずつ確認しましょう。まず、サブクラスである「HelloEmp」ではtoString()メソッドが削除されることがわかります。
次に、[実行される変更]でスーパークラスである[HelloStaff]をクリックします。toString()メソッドが追加されています。同時に[super.getName()]が[this.getName()]に書き換えられています。確認して[終了(F)]をクリックしプルアップを実行します。
エディタービューに戻ります。プレビューの通りに2つのクラスが変更されていることを確認します。パッケージ・エクスプローラーにも変更が反映しています。
まとめ
今回の説明でコード生成機能とリファクタリング機能の初歩を理解できたと思います。プログラミング経験の長い方は「こんな機能使わなくても、自分でやった方が早い」と思うかもしれませんが、ポイントは作業ミスや変更モレの防止にあります。また、Eclipseは文法エラーを即時にチェックしてくれるのでタイプミスの発見はしやすいですが、リファクタリングを手で行った場合、文法エラーにならないような変更モレが起こることがあります。まずは、一度試しに使ってみてはいかがでしょうか?
Eclipseのメニューバーを見て分かるとおり、Eclipseには多数のコード生成機能、リファクタリング機能が実装されています。今回紹介したのは、その中のほんのいくつかにすぎません。次回は、紹介しきれなかったEclipse 3.4のリファクタリング機能について、解説していきます。

![図50:確認して[次へ(N)]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/3930/8-50s.gif)
![図51:確認して[次へ(N)]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/3930/8-51s.gif)

![図53:スーパークラスの変更を確認して[終了]をクリック](http://cz-cdn.shoeisha.jp/static/images/article/3930/8-53s.gif)
