##抽象クラスとシールクラス
・abstractキーワードを使用すると、派生クラスで実装する必要のある不完全なクラスメンバーを作成できる。
・sealedキーワードを使用すると、すでにvirtualとマークされているクラスや特定のクラスメンバーを継承しないようにできる。
virtualキーワード:オーバーライドを行う為のキーワード
##オーバーライド
継承関係にあるクラスで派生クラスがベースクラスのメソッドを上書きすることをいう。
###オーバーライドのメリット
・継承した部分を目的に応じた形に書き換えることで柔軟な開発が出来る。
・修正が必要になった時の修正範囲が少なくなる。
###オーバーロードとの違い
オーバーロードは引数の数や型、返り血が異なるメソッドを同じ名前で複数定義すること。
継承を使わず、同じクラス内で同じ名前のメソッドを作る事をいう。
オーバーライドはサブクラスでスーパークラスのメソッドを上書きすること。
⇒同じクラスで、違う動きのする同じ目名前のメソッドを作る**(オーバーロード)**
⇒別のクラスでメソッドを上書きするのが**(オーバーライド)**
オーバーライドを使うために2つのキーワード
・virtual(これを付けたメソッドは仮想メソッドともいう)
⇒これを付けたメソッドはオーバーライドしていいという目印。
スーパークラスのメソッドにつける。サブクラスでオーバーライドせずそのまま使うこともできる。
・override
⇒オーバーライドするための宣言。サブクラスのメソッドにつける。
(これを付けないとオーバーライドできない)
・抽象メソッド
⇒メソッドの名前と引数の型、数、戻り値の型だけを定義したメソッド。
⇒メソッドの中に具体的な処理を記述してはいけない。
※必ずオーバーライドしなければならない
・抽象クラス
⇒抽象メソッドが一つ以上含まれているクラス。
⇒何も処理が記載されていないメソッドがある為そのままの使用が出来ない。
※必ず継承しなければならない
派生クラスでオーバーライドを禁止したい時
sealed修飾子を使ってシールメソッドを作る。
sealedはサブクラスのサブクラスでオーバーライドを禁止するときに使用。