半人前プログラマーの技術談議

開発した物と,C#を入門者向けに解説した記事を書いています!

【C# オブジェクト指向】継承④ 抽象クラス part2-8

calendar

reload

こんにちは!シロウです!

今回は抽象クラスについて解説します!

抽象クラス

抽象クラスとは

抽象クラスは,インスタンスを作れないクラスです.

つまり,継承してからインスタンスを生成するか,型として使うことしかできません.

 

抽象クラスは,abstract 修飾子を使って,次のように記述します.

 

実際に記述して実行してみましょう.

 

ソースコード

 

実行結果

 

この場合,Humanクラスのインスタンスを作成する事が出来なくなります.

 

抽象メソッド

クラスだけではなく,メソッドも抽象化する事ができます.

抽象メソッドは,構造の定義をするメソッドで,処理は記述しません

今回のように,抽象クラス(スーパークラス)からオーバーライドするメソッドに関しては,中身を記述する必要がありません.

また,抽象メソッドはアクセスレベルもそのまま引き継がれるので,注意しましょう.

(publicで宣言した場合,オーバーライドしたメソッドもpublicにする必要があります.)

抽象メソッドは,抽象クラスと同じように abstract 修飾子を使って,次のように記述します.

 

先ほどのプログラムを修正すると,このようになります.

 

ソースコード

 

実行結果

 

このように,抽象メソッドはオーバーライドして使う事になります

抽象メソッドをオーバーライドせずに,プログラムを実行しようとすると,コンパイルエラーになります.

サブクラスでは,抽象メソッドを必ずオーバーライドして実装する必要があります

 

まとめ

抽象クラスは,サブクラスが作られる事を前提に記述します.

抽象クラスは,継承された後は抽象メソッド以外のフィールド,メソッドを使う事ができますが,

抽象メソッドは,オーバーライドする必要があります

 

今回はここまで.

次回はインターフェースを解説しようと思います.

オブジェクト指向編の本編は次回で最後になると思います.