クラス継承によるメソッド再利用・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月当時の記事になります。

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

グッズ・メモランダム