C#における単一継承の基本と実装例をわかりやすく解説
C#のオブジェクト指向プログラミングにおいて、単一継承(Single Inheritance)とは、ひとつの子クラス(派生クラス)が、ただひとつの親クラス(基底クラス)から機能を受け継ぐ形式の継承を指します。C#では多重継承はクラスに対して許されておらず、この単一継承が基本的な継承スタイルとなります。
ここでは、基底クラスとして「Father」、派生クラスとして「Son」を使い、単一継承の仕組みを具体的なコード例とともに解説します。
基底クラス(Father)の定義
まず、継承元となる基底クラス「Father」を次のように宣言します。
class Father {
public void Display() {
Console.WriteLine("Display");
}
}
このクラスには、コンソールに文字列を出力する Display() メソッドがひとつ定義されています。
派生クラス(Son)の定義
続いて、「Father」クラスを継承する派生クラス「Son」を宣言します。
class Son : Father {
public void DisplayOne() {
Console.WriteLine("DisplayOne");
}
}
クラス名の後にコロン(:)を付けて継承元のクラス名を記述することで、「Son」は「Father」のメンバーを受け継ぎます。これにより、「Son」のインスタンスは独自の DisplayOne() メソッドに加えて、親クラスの Display() メソッドも呼び出せるようになります。
完全なサンプルコード
以下は、C#で単一継承を実装する完全なプログラム例です。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyAplication {
class Demo {
static void Main(string[] args) {
// Father クラスのインスタンス
Father f = new Father();
f.Display();
// Son クラスのインスタンス
Son s = new Son();
s.Display(); // 親クラスのメソッドを呼び出し
s.DisplayOne(); // 子クラス独自のメソッドを呼び出し
Console.ReadKey();
}
// 基底クラス
class Father {
public void Display() {
Console.WriteLine("Display");
}
}
// 派生クラス
class Son : Father {
public void DisplayOne() {
Console.WriteLine("DisplayOne");
}
}
}
}
実行結果
このプログラムを実行すると、コンソールには次のように出力されます。
Display Display DisplayOne
コードのポイント
- Father f = new Father(); — 基底クラスのインスタンスを作成し、自身の
Display()を呼び出しています。 - Son s = new Son(); — 派生クラスのインスタンスは、親クラスから継承した
Display()と、自分自身のDisplayOne()の両方を利用できます。 - 出力結果を見ると、
Displayが2回表示されていることから、派生クラスが基底クラスのメソッドをそのまま使えることが確認できます。
このように、単一継承を活用することで、共通の機能を基底クラスにまとめ、派生クラスで再利用しながら固有の機能を追加していくことができます。コードの重複を減らし、保守性の高い設計につながる重要な概念なので、ぜひマスターしておきましょう。
-
C#におけるマルチレベル継承の解説と実装例
マルチレベル継承(Multilevel Inheritance)とは、ある派生クラスからさらに別の派生クラスを作成する継承の形態のことです。C#では、1つのクラスを基底クラスとして継承し、その派生クラスをさらに別のクラスが継承するという、階層的な構造を実現できます。 この概念を分かりやすく表す例として、「祖父 → 父 → 息子」という家族関係がよく使われます。祖父クラスを父クラスが継承し、さらにその父クラスを息子クラスが継承することで、3段階のマルチレベル継承が実現します。 マルチレベル継承の仕組み マルチレベル継承では、最下層の派生クラスは、上位のすべての基底クラスのメンバー(メソッドやプロ
-
シングルページアプリを捨ててTurbolinksを使う?Rails開発者のためのPJAX活用ガイド
Turbolinks――おそらくRails界で最も忌み嫌われている言葉のひとつでしょう。 試したことがある方も多いはずです。新規プロジェクトや既存アプリにTurbolinksを組み込んだ途端、アプリは奇妙で不可解なバグを連発するようになりました。幸い、解決策は簡単でした。Turbolinksをオフにすればよかったのです。 ……しかし、上手に使いこなしている企業も存在します。Honeybadgerでも実際に使いこなしています。そして、私たちは天才ではありません。 その答えはあまりにシンプルなので、あえて取り上げるのを躊躇するほどです。とはいえ、Ruby NationやMadison+Rubyでこ