Javaプログラミングで、多くのメソッドを再利用しやすいクラス継承という方法
Javaプログラミングにおいて、半分以上のメソッドを再利用したい場合、どんな方法を用いたら良いですか?
Javaプログラミングで、クラスを継承する方法を用いたら、多くのメソッドを再利用しやすいです。
実際にクラスを継承するようにしたら、希望するメソッドを再利用できます。
Javaプログラミングで、多くのメソッドを再利用しやすいクラス継承という方法
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%以上のメソッド数を再利用することになります。
よって、サブクラスとスーパークラスの「結び付きが強い」と判断して、クラスの継承という方法でメソッドを再利用します。
スーパークラスの2個のメソッドを再利用したサブクラスの例です。
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プログラミングでは、クラスを継承することで、多くのメソッドを再利用できます。
親クラスに定義されたメソッドを、子クラスでそのまま使うことができます。
なお、継承できるメソッドは、public, protectedなメソッドです。
クラスを継承することでメソッドを再利用することは、以下の点で役立ちます。
- プログラムコードの重複を避けること。
- 既存のクラスを拡張することによって、新しい機能を追加すること。
クラスを継承してメソッドを再利用するプログラムコードの例
クラスを継承してメソッドを再利用するプログラムコードの例です。
// 親クラス
class Parent {
// publicなメソッド
public void sayHello() {
System.out.println("こんにちは");
}
// protectedなメソッド
protected void sayGoodbye() {
System.out.println("さようなら");
}
}
// 子クラス
class Child extends Parent {
// 独自のメソッド
public void sayName() {
System.out.println("私は子クラスです");
}
}
// メインクラス
public class Main {
public static void main(String[] args) {
// 子クラスのインスタンスを作成
Child child = new Child();
// 親クラスのpublicなメソッドを呼び出す
child.sayHello();
// 親クラスのprotectedなメソッドを呼び出す
child.sayGoodbye();
// 子クラスの独自のメソッドを呼び出す
child.sayName();
}
}
クラスを継承してメソッドを再利用しているのは、以下のプログラムコードです。
// 親クラスのpublicなメソッドを呼び出す
child.sayHello();
// 親クラスのprotectedなメソッドを呼び出す
child.sayGoodbye();
振る舞いを変更したい場合など、クラスの継承が有効な場合
一般的なクラスの継承は、以下のような場合に有効です。
親クラスと子クラスが「is-a」関係にある場合
例えば、動物クラスを継承した犬クラスです。
A dog is an animal.
上記の英文のように、動物クラスを継承した犬クラスは、「is-a」関係と言えます。
つまり、犬クラスのオブジェクトは、動物クラスのオブジェクトでもあります。
これは、犬クラスが、動物クラスの属性やメソッドを引き継ぐことを意味します。
親クラスのメソッドを子クラスでオーバーライドして、振る舞いを変更したい場合
例えば、図形クラスを継承した円クラスや四角形クラスで、面積や周長を計算するメソッドをオーバーライドするなどです。
親クラスのメソッドを子クラスでそのまま使うだけでなく、追加の処理を行いたい場合
例えば、車クラスを継承したレーシングカークラスで、走行するメソッドに加速や減速の処理を追加するなどです。
クラス継承の設計には、注意が必要です
なお、Javaプログラミングにおいて、クラス継承の設計や管理には注意が必要です。
例えば、親クラスの変更が子クラスに影響を与える可能性があります。
クラスの継承関係が複雑になると、コードの可読性や保守性が低下する恐れがあります。
したがって、クラスの継承は適切に設計される必要があります。