カテゴリ: C# 更新日: 2025/12/07

C#の継承とは?親クラス・子クラスの関係を基礎から学ぼう

C#の継承とは?親クラス・子クラスの関係を基礎から学ぼう
C#の継承とは?親クラス・子クラスの関係を基礎から学ぼう

先生と生徒の会話形式で理解しよう

生徒

「C#の“継承”ってよく聞くけど、どんな仕組みなんですか?」

先生

「“継承”とは、あるクラスが別のクラスの機能を受け継ぐ仕組みのことです。」

生徒

「たとえばどんなときに使うんですか?」

先生

「車や動物のように“共通の特徴”を持ったものを表現したいときに、とても便利です。具体的に見てみましょう!」

1. C#の継承とは?

1. C#の継承とは?
1. C#の継承とは?

継承(けいしょう)とは、親クラス(スーパークラス)の機能を、子クラス(サブクラス)が受け継ぐ仕組みです。C#では、共通の処理や性質をまとめた「親クラス」を作って、それを「子クラス」が引き継ぐことで、コードを効率的に書けるようになります。

たとえば、「動物」という親クラスを作って、「犬」や「猫」という子クラスがその特徴を引き継ぐ、というようなイメージです。

2. クラスとは何かをおさらい

2. クラスとは何かをおさらい
2. クラスとは何かをおさらい

「クラス」とは、モノの設計図のようなものです。たとえば「人間」というクラスを作れば、「名前」や「年齢」といった情報(=プロパティ)や、「話す」「歩く」といった行動(=メソッド)を記述することができます。

そして、クラスから作られた実体のことをオブジェクトと呼びます。

3. 継承の基本構文

3. 継承の基本構文
3. 継承の基本構文

C#で継承を使うには、クラス定義のときに「:(コロン)」を使って、親クラスを指定します。


class 親クラス名
{
    // 共通の機能やプロパティ
}

class 子クラス名 : 親クラス名
{
    // 子クラス独自の機能
}

4. 実例で学ぶ:動物クラスの継承

4. 実例で学ぶ:動物クラスの継承
4. 実例で学ぶ:動物クラスの継承

ここでは、「Animal(動物)」という親クラスを作り、「Dog(犬)」という子クラスがその機能を継承する例を紹介します。


class Animal
{
    public void Breathe()
    {
        Console.WriteLine("呼吸しています。");
    }
}

class Dog : Animal
{
    public void Bark()
    {
        Console.WriteLine("ワンワン!");
    }
}

class Program
{
    static void Main()
    {
        Dog myDog = new Dog();
        myDog.Breathe();  // 親クラスのメソッド
        myDog.Bark();     // 子クラスのメソッド
    }
}

このコードでは、「Dog」クラスは「Animal」クラスを継承しているため、「Breathe」メソッド(呼吸する)が使えるようになっています。


呼吸しています。
ワンワン!

5. なぜ継承を使うのか?

5. なぜ継承を使うのか?
5. なぜ継承を使うのか?

継承を使うことで、重複したコードを減らすことができます。また、プログラムの構造が整理され、メンテナンスがしやすくなるというメリットもあります。

例えば、「猫」や「鳥」など他の動物クラスを作るときも、「Animal」クラスを継承すれば、呼吸の処理を何度も書かずに済みます。

6. 子クラスで親クラスの機能を追加・変更する

6. 子クラスで親クラスの機能を追加・変更する
6. 子クラスで親クラスの機能を追加・変更する

子クラスでは、親クラスで定義された機能を拡張したり、上書き(オーバーライド)したりすることもできます。

親クラスのメソッドを上書きするには、メソッドにvirtualをつけて、子クラスでoverrideを使います。


class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("何かを話します。");
    }
}

class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("ワンワン!");
    }
}

このようにすることで、「Dog」クラスは親の「Speak」メソッドを独自の内容で書き換えることができます。

7. 親クラスのコンストラクタを使う

7. 親クラスのコンストラクタを使う
7. 親クラスのコンストラクタを使う

コンストラクタ(※オブジェクトを作るときに呼ばれる特別なメソッド)も継承できます。子クラスで親クラスのコンストラクタを呼びたい場合は、baseキーワードを使います。


class Animal
{
    public Animal()
    {
        Console.WriteLine("Animalのコンストラクタが呼ばれました。");
    }
}

class Dog : Animal
{
    public Dog()
    {
        Console.WriteLine("Dogのコンストラクタが呼ばれました。");
    }
}

Animalのコンストラクタが呼ばれました。
Dogのコンストラクタが呼ばれました。

8. C#の継承で覚えておきたいポイント

8. C#の継承で覚えておきたいポイント
8. C#の継承で覚えておきたいポイント
  • クラスの継承は1つの親クラスからのみ可能(単一継承)
  • : 親クラス名 で継承する
  • virtualoverrideでメソッドの上書きができる
  • baseで親クラスのコンストラクタやメソッドを呼べる

これらを覚えておくことで、C#のオブジェクト指向プログラミングの基本をしっかりと身につけられます。

まとめ

まとめ
まとめ

C#における継承は、コードの重複を避けながら、共通する処理や特性を効率的に再利用できる非常に重要な仕組みです。特に「親クラス」と「子クラス」の関係を正しく理解することで、プログラム全体をより読みやすく、メンテナンスしやすくすることができます。

実際の開発では、「動物」「乗り物」「社員」など、共通の特徴を持つオブジェクトを扱う場面が多くあります。そのとき、共通する機能を親クラスにまとめておき、個別の違いを子クラスで表現することで、柔軟性の高い設計が可能になります。

また、virtualoverrideを使えば、親クラスの動作を必要に応じて子クラスで変更することができ、さらにbaseを使って親クラスのコンストラクタやメソッドを明示的に呼び出すことも可能です。

継承の活用例:動物と猫のクラス


class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("何かの声を出しています。");
    }
}

class Cat : Animal
{
    public override void Speak()
    {
        Console.WriteLine("ニャー!");
    }
}

class Program
{
    static void Main()
    {
        Animal myCat = new Cat();
        myCat.Speak(); // 結果:ニャー!
    }
}

このコードでは、Animalクラスを継承したCatクラスが、Speakメソッドを上書きしています。実行時には、CatクラスのSpeakが呼ばれ、「ニャー!」と表示されます。このように、多態性(ポリモーフィズム)を使った拡張性のあるコードも継承の大きな魅力です。

C#の継承は、一見難しそうに見えるかもしれませんが、使い方を丁寧に理解していくことで、現実世界のモノや動作を自然にプログラムで表現できるようになります。これからもいろいろな継承の使い方を試してみましょう。

先生と生徒の振り返り会話

生徒

「継承って、最初はよく分からなかったけど、親クラスと子クラスの関係で例えると分かりやすかったです!」

先生

「そうですね。現実の世界に置き換えると、たとえば“動物”を親にして、“犬”や“猫”を子にすることで、共通の機能を一度だけ書けるのが継承の強みなんです。」

生徒

overridebaseもすごく便利ですね!親の機能を使いながら、必要に応じて書き換えられるって、かなり自由度が高い気がします。」

先生

「その通りです。継承をうまく使えば、コードの整理もしやすくなりますし、再利用性もグッと高まります。これからもどんどん活用していきましょう!」

カテゴリの一覧へ
新着記事
New1
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New2
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New3
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New4
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.4
Java&Spring記事人気No4
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.8
Java&Spring記事人気No8
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決