特殊なスーパークラス
スーパークラスで特殊なクラスがあります。それがabstractです。abstractクラスを継承するサブクラスは、指定されたメソッドを強制的に実装しなければいけません。プログラムで確認しましょう。
クラスParentをabstractクラスにします。まず3行目を次のように修正してください。そして11行目を追加して保存してください。
1 2 3 4 5 6 7 8 9 10 11 12 |
package step11; abstract class Parent { public void parent01() { System.out.println("parent01"); } public void parent02() { System.out.println("parent02"); } abstract void parent03(); } |
これでクラスParentを継承したサブクラスではメソッドparent03を実装しなければいけません。クラスChildでエラーが出るようになりました。
クラスChildにメソッドを定義しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package step11; public class Child extends Parent{ public void child01() { System.out.println("child01"); } public void child02() { System.out.println("child02"); } @Override public void parent02() { System.out.println("child-parent02"); } @Override void parent03() { // TODO 自動生成されたメソッド・スタブ } } |
なにが便利?
強制的にメソッドを定義させることができますので、クラス作成時のルール化ができます。例えば複数のクラスを作成する時に、自由に作成すると同じような機能でもバラバラのメソッド名、引数になってしまいます。abstractを利用すればメソッド名、引数を統一できるのです。