実装が不定なクラスを作り、そこから継承することで汎用性を持たせることができる。 しかし、それだと継承せずにインスタンスが作られることで、意味のないインスタンスが作成されてしまう。 それを防ぐには、コンストラクタにprotectedをつける手もある。 これで外部からコンストラクタが呼べず、継承したクラスからでないとインスタンスが作れなくなる。 しかし、それでもサブクラスでメソッドやプロパティをオーバーライドしないと意味のないインスタンスが作られてしまう。 こうした問題を解決するのが、抽象クラスや抽象メソッド・プロパティである。abstractのついたクラスは、 ・継承してからでないとインスタンスを作れない。 また、abstractのついたメソッドやプロパティは、 ・子クラスでオーバーライドしないとエラーになる。 抽象クラスについて using System; using System.Col