Javaプログラミングのクラス継承によるメソッド再利用

Javaプログラミングにおいて、半分以上のメソッドを再利用したい場合、どんな方法を用いたら良いですか?

Javaプログラミングのクラスを継承する方法を用いたら、多くのメソッドを再利用しやすいです。

実際にクラスを継承するようにしたら、希望するメソッドを再利用できるでしょう。

Javaプログラミング、クラスを継承してメソッドを再利用

Javaプログラミングにおいて、メソッドを再利用する方法の一つに、クラスを継承する方法があります。

例えば次のような場合に、クラスを継承してメソッドを再利用してみようと思います。

スーパークラスのメソッドについて、50%以上のメソッドを再利用したい場合。

再利用するメソッド数が、スーパークラスの全メソッド数の50%以上である。

この条件が成り立つなら、サブクラスとスーパークラスの「結び付きが強い」と判断します。

そして、クラス継承という方法でメソッドを再利用してみます。

Javaプログラミングのクラス
Javaプログラミングのクラス・イメージ画像

Javaプログラミングのクラスを継承してメソッドを再利用、プログラムの例

スーパークラスです。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(){...} 

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

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

JTextFieldクラスを継承してメソッドを再利用する、プログラムの例

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

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アプリの品質を保つため、Javaソースコードを書くための工夫

Javaソースコードを正しく書くための、ちょっとした工夫について、ご紹介しています。 変数の寿命を限定する書き方。 肯定的な条件を優先して条件分岐する書き方。 クラス…