継承
Midoliy|F#プログラミング

継承の概要
コンストラクタと継承

継承の概要


 継承は、オブジェクト指向プログラミングで 'is-aの関係' を表します。つまり、あるクラスのサブタイプをモデル化するために使用されます。
 クラスを継承させるには、inheritキーワード を使用して、継承関係を指定します。基本的には以下のような形式となります。
type MyDerived (...) = class    // 派生クラス(= 子クラス)の宣言
    inherit MyBase(...)         // 基底クラス(= 親クラス)の指定
end

 基となったクラスを「基底クラス」、あるいは「親クラス」と言います。また、基底クラスから継承したクラスを「派生クラス」、あるいは「子クラス」といいます。
 派生クラスは '1つの基底クラスしか' 持つことができません。複数の基底クラスから継承することはできませんので、注意しましょう。また、基底クラスを指定しなかった場合、つまり通常のクラス宣言の場合は、暗黙的に System.Objectクラス を継承します。

継承メンバ

 あるクラスを継承するとき、基底クラスのメンバとメソッドは派生クラスの直接のメンバであるかのように使用できます。しかし、let束縛された値とコンストラクタパラメータはprivateであるため、派生クラスから直接アクセスすることはできません。そこで baseキーワード を利用して基底クラスのインスタンスを参照します。baseキーワードは自己識別子のように使われます。



コンストラクタと継承


 「継承メンバ」で基底クラスのコンストラクタには直接アクセスできないと述べました。では、基底クラスで指定されているパラメータリストへはどのようにして引数を渡すのでしょうか?解決方法はとても簡単です。inheritキーワードとともに引数を渡すだけです。以下は簡単な例となります。