抽象メソッドとは
メソッドの内部の処理が未定なメソッド。
- 宣言 public abstract 戻り値 メソッド名(引数リスト);
抽象クラスとは
抽象メソッドを含むクラスのこと。 newによるインスタンス化ができない(禁止されている)
抽象クラスのメリット
詳細未定なメソッドを抽象メソッドとして宣言すれば、 未来の開発者にオーバーライドを強制できる
- 宣言 public abstract class クラス名 { }
抽象クラスの継承
ある抽象クラスAを継承したサブクラスBが存在する時、 サブクラスBは抽象クラスAの抽象メソッドを継承している。
その為、抽象メソッドをオーバーライドしないとコンパイルエラーが発生する。
解決策としては - サブクラス B の宣言にabstract を付与して抽象クラスにする - 未完成の抽象メソッドをオーバーライドする※ ※このことをimlements(実装)すると表現することもある
多階層の抽象継承構造
全ての抽象メソッドを実装しなければクラス宣言からabstractを外すことは できない =newできない
ある抽象クラスAを継承したサブクラスB,そしてサブクラスBを継承した サブクラスCがあるとき、 サブクラスBで全ての抽象メソッドをオーバーライドする必要はなく クラスをnewする時点で全ての抽象メソッドがオーバーライド できていれば良い