コツコツ学習ブログ

プログラマのweb上のメモ的なもの

抽象クラス,抽象メソッド

抽象メソッドとは

メソッドの内部の処理が未定なメソッド。

  • 宣言 public abstract 戻り値 メソッド名(引数リスト);

抽象クラスとは

抽象メソッドを含むクラスのこと。 newによるインスタンス化ができない(禁止されている)

抽象クラスのメリット

詳細未定なメソッドを抽象メソッドとして宣言すれば、 未来の開発者にオーバーライドを強制できる

  • 宣言 public abstract class クラス名 { }

抽象クラスの継承

ある抽象クラスAを継承したサブクラスBが存在する時、 サブクラスBは抽象クラスAの抽象メソッドを継承している。

その為、抽象メソッドをオーバーライドしないとコンパイルエラーが発生する。

解決策としては   - サブクラス B の宣言にabstract を付与して抽象クラスにする - 未完成の抽象メソッドをオーバーライドする※ ※このことをimlements(実装)すると表現することもある

多階層の抽象継承構造

  • 全ての抽象メソッドを実装しなければクラス宣言からabstractを外すことは できない =newできない

  • ある抽象クラスAを継承したサブクラスB,そしてサブクラスBを継承した サブクラスCがあるとき、 サブクラスBで全ての抽象メソッドをオーバーライドする必要はなく クラスをnewする時点で全ての抽象メソッドがオーバーライド できていれば良い