クラス継承によるメソッド再利用・Javaソースコードの書き方

クラスを継承してメソッドを再利用

樹形図

継承のイメージ画像

メソッドを再利用する方法の一つに、クラスを継承する方法があります。

次のような場合にクラスを継承して、メソッドを再利用してみようと思います。
スーパークラスのメソッドについて、50%以上のメソッドを再利用できる場合。

再利用するメソッド数が、スーパークラスの全メソッド数の50%以上である、という条件が成り立つなら、サブクラスとスーパークラスの「結び付きが強い」と判断します。そして、クラス継承という方法でメソッドを再利用してみます。

クラス継承の例

スーパークラスです。4個のメソッドがあります。

public class SuperClass{
    public void superMethod1(){...}
    public void superMethod2(){...}
    public void superMethod3(){...}
    public void superMethod4(){...}
}

サブクラスにおいて、スーパークラスの次の2個のメソッドを再利用したい場合、

    public void superMethod1(){...}
    public void superMethod2(){...}

スーパークラスの4個のメソッド中、2個のメソッドを再利用するので、50%以上のメソッド数を再利用することになります。
よって、サブクラスとスーパークラスの「結び付きが強い」と判断して、クラスの継承という方法でメソッドを再利用します。

サブクラスです。

public class SubClass extends SuperClass{
    //
    // 継承によって、2個のメソッドを再利用します。
    //  public void superMethod1(){...}
    //  public void superMethod2(){...}
    //

    public void subMethod900(){...}
    public void subMethod901(){...}
}

注意する点として、クラスの継承という方法でメソッドを再利用した場合、再利用したくないメソッドも、利用できてしまう点があります。
上記のプログラム例ではサブクラスにおいて、次の再利用したくないメソッドも、継承しています。

 public void superMethod3(){...} 
 public void superMethod4(){...} 

よってサブクラス側で、これら再利用したくないメソッドを間違って使用してしまい、プログラムが誤動作してしまう、という可能性があります。

クラスの継承では、コンパイル処理が合格しても、メソッドを誤って使用する場合を許しています。

プログラムの例

以下にクラス継承という方法で、メソッドを再利用している例を書きます。
プログラムの詳細を理解する必要は、ありません。

public class ExTextField extends JTextField {

    //
    // 継承によって、JTextFieldクラスの50%以上のメソッドを再利用する。
    //

    public ExTextField(){

    }


    public int getValue() throws Exception{
        try{
            String text = this.getText();
            int value = Integer.parseInt(text);
            return value;
        }
        catch (NumberFormatException e){
            //数字文字列でない文字列が入力された場合。利用先で、それぞれ対処してもらう。
            throw new Exception(e);
        }
    }

}

自作ExTextFieldクラスは、JTextFieldクラスに対して、次のメソッドを付け足しています。
public int getValue() throws Exception

このメソッドは、入力された文字列を数値に変換して、その数値を返します。
自作のメソッドを――自作の機能を――付け足しつつ、自作ExTextFieldクラスは、JTextFieldクラスの働き(機能)を、全て再利用します。

全て再利用するので――JTextFieldクラスのメソッドを、50%以上、再利用するので――自作ExTextFieldクラスは、クラスの継承によって、JTextFieldクラスのメソッドを再利用することにしました。

参考:継承できるメソッドは、public, protectedなメソッドとなります。

※この記事は、2003年6月当時の記事になります。

コンピューター
この記事をシェアする

【広告】デザインパターン Java 」の関連商品

• Amazon.co.jp

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

Amazon 価格:4,104 円(2019年5月20日 02:24時点詳細はこちら)

著者:結城 浩

出版社:ソフトバンククリエイティブ

種別:大型本

販売店:Amazon.co.jp

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

Head Firstデザインパターン ―頭とからだで覚えるデザインパターンの基本

Amazon 価格:4,968 円(2019年5月20日 02:24時点詳細はこちら)

著者:Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates

出版社:オライリージャパン

種別:大型本

販売店:Amazon.co.jp

• 楽天市場

インクルーシブHTML + CSS & JavaScript 多様なユーザーニーズに応えるフロントエ……

インクルーシブHTML + CSS & JavaScript 多様なユーザーニーズに応えるフロントエ……

価格:3,024 円[税込](2019年5月20日 02:24時点)
送料込

ポイント:3 倍
✓開始日時2019-05-14 05:00
✓終了日時2019-05-25 23:59

販売店:楽天ブックス

【楽天ブックスならいつでも送料無料】
多様なユーザーニーズに応えるフロントエンドデザインパターン Heydon Pickering ボーンデジタルインクルーシブエイチティーエムエルプラスシーエスエスアンドジャバスク……

Java言語で学ぶデザインパターン入門増補改訂版 [ 結城浩 ]

Java言語で学ぶデザインパターン入門増補改訂版 [ 結城浩 ]

価格:4,104 円[税込](2019年5月20日 02:24時点)
送料込

ポイント:3 倍
✓開始日時2019-05-11 00:00
✓終了日時2019-05-25 23:59

販売店:楽天ブックス

【楽天ブックスならいつでも送料無料】
結城浩 SBクリエイティブBKSCPN_
【bookーfestivalーthr】 ジャバ ゲンゴ デ マナブ デザイン パターン ニュウモン ユウキ,ヒロシ 発行年月:2004年06月 ページ数:484p ……

グッズ・メモランダム