C#におけるマルチレベル継承の解説と実装例
マルチレベル継承(Multilevel Inheritance)とは、ある派生クラスからさらに別の派生クラスを作成する継承の形態のことです。C#では、1つのクラスを基底クラスとして継承し、その派生クラスをさらに別のクラスが継承するという、階層的な構造を実現できます。
この概念を分かりやすく表す例として、「祖父 → 父 → 息子」という家族関係がよく使われます。祖父クラスを父クラスが継承し、さらにその父クラスを息子クラスが継承することで、3段階のマルチレベル継承が実現します。
マルチレベル継承の仕組み
マルチレベル継承では、最下層の派生クラスは、上位のすべての基底クラスのメンバー(メソッドやプロパティ)にアクセスできます。上記の例で言えば、Sonクラスは、自分自身のメンバーに加えて、FatherクラスとGrandfatherクラスのpublicなメンバーも利用可能です。
コード例
以下は、C#でマルチレベル継承を使用したサンプルプログラムです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo {
class Son : Father {
public void DisplayTwo() {
Console.WriteLine("Son..");
}
static void Main(string[] args) {
Son s = new Son();
s.Display(); // Grandfatherクラスのメソッド
s.DisplayOne(); // Fatherクラスのメソッド
s.DisplayTwo(); // 自身(Son)のメソッド
Console.Read();
}
}
class Grandfather {
public void Display() {
Console.WriteLine("Grandfather...");
}
}
class Father : Grandfather {
public void DisplayOne() {
Console.WriteLine("Father...");
}
}
}
実行結果
Grandfather... Father... Son..
コードのポイント
このプログラムでは、以下のような継承関係が構築されています。
- Grandfatherクラス: 継承階層の最上位にある基底クラス。
Display()メソッドを持ちます。 - Fatherクラス:
Grandfatherクラスを継承する派生クラス。DisplayOne()メソッドを追加しています。 - Sonクラス:
Fatherクラスを継承する派生クラス。DisplayTwo()メソッドを持ち、Mainメソッドを含みます。
Sonクラスのインスタンスを作成すると、継承チェーン全体を通じて、祖父・父・息子それぞれのメソッドを呼び出せることが出力結果から確認できます。これがマルチレベル継承の基本的な動作です。
-
JavaScriptにおける継承の基本を具体例で解説
JavaScriptは、クラスベースではなくプロトタイプベースのオブジェクト指向言語です。そのため、継承はprototype(プロトタイプ)オブジェクトを通じて実現されます。コンストラクタ関数のprototypeプロパティにメソッドやプロパティを追加すると、そのコンストラクタから生成されたすべてのインスタンスが、それらを共有して利用できるようになります。 プロトタイプによる継承の仕組み JavaScriptでは、インスタンスからプロパティやメソッドが参照されるとき、まずオブジェクト自身を検索し、見つからなければプロトタイプチェーンをたどって上位のオブジェクトへと探しに行きます。これにより、各イ
-
jQueryのclosest()メソッドの使い方を実例付きで解説
jQueryのclosest()メソッドは、選択された要素から出発してDOMツリーを上方向へ辿り、指定した条件に最初に一致する祖先要素を返すためのトラバース系メソッドです。親・子・兄弟といった関係性を利用して要素を操作したい場合に非常に便利です。 構文 closest()メソッドの基本構文は以下のとおりです。 $(selector).closest(filter) パラメータの説明 filter:どの祖先要素を対象にするかを指定するセレクター式です。要素名、クラス名、IDなどを指定できます。 条件に一致する祖先が見つかった時点で探索を終了し、その要素のみを返します。 一致する祖先が存在しない