C#_継承とは

ポリモーフィズムに関係。

MainForm : Form 的なやつ。

継承とは、
あるクラスの持つ機能をそっくり引き継ぎ
さらに機能を付け加えた新しいクラスを作る機能のこと
C# では : ( コロン ) を用いて表現する。

    MainForm : Form

MainForm クラスは、Form クラスがを引き継いでいることを示している。

用語
スーパクラス最初のクラスのこと。クラス。継承元。( ex) Form )
サブクラス継承して作ったクラスのこと。クラス。継承先。( ex) MainForm )

 

abstract インターフェイス

 

     public abstract class Hoge

abstract はメソッドにも付与できる。宣言のみ。
メソッドの中身を書き込むとエラーとなる。

 

abstract キーワードを付けたクラスは抽象クラスといい、
中身のない定義が含まれるクラスのこと。
抽象クラスは継承には使えるが、直接インスタンスを作成することは不可

    Hoge hoge = new Hoge(); // エラーとなる

抽象クラスは、中身のないメソッド含むクラスでり、
クラスそのものに変わりはない。クラスに許される記述が可能。
中身があるメソッドも記述が可能。

 

インターフェイスは、一切中身を持たない。中身はインスタンス先で実装。

中身のない抽象クラスインターフェース代用にはならない
継承する際、スーパークラスとなれるクラスは 1 個だけだが、
いくつもの機能や役割を 1 個のオブジェクトに持たせるには
インターフェイスは不可欠。

インターフェイスの宣言では、class の代わりに interface を用いる。
abstract は必要ない。interface が宣言のみという意味だし。
継承先でも override のようなキーワードは不必要。
インターフェイスに含まれるメソッドを実装しないとエラーになる。

 

心得
インターフェイスなどの機能で足りる目的に継承は使わない
・継承するより、オブジェクトをメンバ変数としてクラス内に持つ
・継承関係で依存するクラスは少なければ少ないほど見通しがよくなる
・継承を使う場合でも、使いすぎないように心がける

 

 

こちらから。
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_004/csharp_abc01.html
http://www.atmarkit.co.jp/fdotnet/csharp_abc/csharp_abc_004/csharp_abc03.html
http://itpro.nikkeibp.co.jp/members/NSW/ITBASIC/20050422/159914/?rt=nocnt

 

以上。

オーバーライドは継承。オーバーロードは継承関係ない。
スーパークラスはベースクラス、基底クラスとも。サブクラスは派生クラスともいう。