将来のまだ決まっていない処理を利用した汎用クラスを作る場合にインターフェースが利用されました。
しかし、インターフェースに
インスタンス変数や実体のあるメソッドを作ることはできません。
インスタンス変数や基本的なメソッド、コンストラクタ、そして
『将来の処理を予定する宣言だけのメソッド』で構成されるクラスを抽象クラスと呼びます。
通常のクラスとの違いは、宣言だけのメソッドを待つか否かです。
クラス定義記述で、abstractを付けたclassで作成します。
また
この宣言だけのメソッドもabstractを付けて宣言します。
abstract class クラス名 { インスタンス変数列挙; コンストラクタやメソッド abstract メソッド名(引数列挙); }
抽象クラスを直接newで生成することはできません。
継承クラスを作り、そこでabstractの実体となるメソッドを
作らないとnew による生成ができません。
抽象クラスは、その
継承クラスでabstractメソッドの実体を、目的に合わせて作らなければ使えないクラスと言えます。
抽象クラスは、これからそれを継承して作るであろうクラスの指針となるクラスと
して作られます。