この章では抽象クラスについて説明します。
抽象クラスとは親クラスには大まかなことだけを定義しておいて、具体的なことは継承した各クラス内で決めると言う仕組みの事です。
抽象クラスは親クラスの宣言にが付いたクラスであり、抽象クラスの中のメソッドには名前だけ決めて、中身は何も書きません。そして、メソッドの内容は抽象クラスを継承したクラスに書きます。このようなメソッドを抽象メソッドといいます。
抽象メソッドは先頭にabstractと書きます。 次の例ではクラスは4つありますが、それぞれ別ファイルに保存してください。
次のファイルは「Soldier.java」です。 次のファイルは「Superman.java」です。
次のファイルは「SpiderMan.java」です。 次のファイルは「Main6.java」です。 この例ではSoldierクラスが抽象クラスになります。 抽象クラスを宣言した後は以下のようにabstractを付けて抽象メソッドを宣言しますが、抽象メソッドは中身を書きません。 また、抽象クラスには普通のメソッドも記述出来ます。
つまり、抽象メソッドでないメソッドも書くことができます。
抽象メソッドでない普通のメソッドは継承するクラスにも共通のメソッドであり、わざわざクラスごとに内容を変える必要が無い場合には普通のメソッドにしてください。
この例では寝ると言うsleepメソッドを抽象メソッドにしないで、普通のメソッドにしています。
抽象メソッドは例えばeatメソッドではSoldierごとに食べるものが違うので、eatと言う名前だけ決めて、後の具体的な内容は抽象クラスを継承したクラスのeatメソッドに任せるという形を取ります。
つまり、抽象クラスを作った時点では具体的なメソッドの中身を決める必要が無いわけです。
runやeatなど必要な機能だけを抽象クラスでは決めることになります。
抽象クラスを継承したクラスは、この抽象メソッドを必ずオーバーライドしなければなりません。
オーバーライドしないとコンパイルエラーとなります。
ですので のように抽象メソッドの宣言をしたのならば次のように抽象クラスを継承したクラス内で実際の具体的な内容を記述してください。 つまり以下のように書くとエラーになります。 結果は以下の通りです。
カテゴリー