0Pricing
C# Academy · レッスン

ポリモーフィズムとメソッドのオーバーライド

メソッドのオーバーライドによって柔軟で再利用可能なコードを作るポリモーフィズムを身につけます

「ポリモーフィズムとメソッドのオーバーライド」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン7/7です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全7レッスンが含まれています。

ポリモーフィズム入門

ポリモーフィズムとメソッドのオーバーライド

次のレッスンへようこそ!このレッスンでは、オブジェクト指向プログラミングに不可欠な概念であるポリモーフィズムと、メソッドをオーバーライドして柔軟で再利用可能なコードを提供する方法を学びます。それでは始めましょう!

ポリモーフィズムとメソッドのオーバーライド — イラスト1

ポリモーフィズムとは

ポリモーフィズムとは

ポリモーフィズム(多態性)は「多くの形」を意味し、異なるクラスのオブジェクトを共通の基底クラスのオブジェクトとして扱えるようにします。これにより、コードの柔軟性と再利用性が高まります。

例: オブジェクトの種類に応じて、メソッドの動作を変えることができます。

重要なポイント: C#では、メソッドのオーバーライドとインターフェースによってポリモーフィズムを実現します。

メソッドのオーバーライドを理解する

メソッドのオーバーライドを理解する

メソッドのオーバーライドを使用すると、派生クラスで、基底クラスにすでに定義されているメソッドの具体的な実装を提供できます。基底クラスでは virtual キーワードを、派生クラスでは override キーワードを使用します。例:

ヒント: メソッドのオーバーライドにより、参照型にかかわらず、オブジェクトに対して正しいメソッドが呼び出されます。

using System;

class Animal {
    public virtual void Speak() {
        Console.WriteLine("The animal makes a sound.");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("The dog barks.");
    }
}

class Cat : Animal {
    public override void Speak() {
        Console.WriteLine("The cat meows.");
    }
}

class Program {
    static void Main() {
        Animal myDog = new Dog();
        Animal myCat = new Cat();

        myDog.Speak(); // Outputs: The dog barks.
        myCat.Speak(); // Outputs: The cat meows.
    }
}

ポリモーフィズムの使用

ポリモーフィズムの使用

ポリモーフィズムを使用すると、共通のインターフェースを介して、異なる種類のオブジェクトで動作するコードを記述できます。例:

重要なポイント: ポリモーフィズムにより、より汎用的で再利用しやすいコードを記述できます。

using System;

class Animal {
    public virtual void Speak() {
        Console.WriteLine("The animal makes a sound.");
    }
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("The dog barks.");
    }
}

class Cat : Animal {
    public override void Speak() {
        Console.WriteLine("The cat meows.");
    }
}

class Program {
    static void Main() {
        Animal[] animals = { new Dog(), new Cat() };

        foreach (Animal animal in animals) {
            animal.Speak(); // Calls the appropriate method for each object
        }
    }
}

オーバーライドでの base キーワードの使用

オーバーライドでの base キーワードの使用

base キーワードは、オーバーライドしたメソッド内から基底クラスのメソッドを呼び出すために使用します。例:

ヒント: オーバーライドしたメソッド内でも基底クラスの機能を維持したい場合は、base を使用します。

using System;

class Animal {
    public virtual void Speak() {
        Console.WriteLine("The animal makes a sound.");
    }
}

class Dog : Animal {
    public override void Speak() {
        base.Speak(); // Calls the base class method
        Console.WriteLine("The dog barks.");
    }
}

class Program {
    static void Main() {
        Dog myDog = new Dog();
        myDog.Speak(); // Outputs: The animal makes a sound. The dog barks.
    }
}

抽象クラスとメソッド

抽象クラスとメソッド

抽象クラスは、派生クラスの設計図となります。抽象メソッドを含めることができ、抽象メソッドは派生クラスでオーバーライドする必要があります。例:

重要なポイント: 抽象メソッドにより、派生クラスが独自の実装を提供することを強制できます。

using System;

abstract class Animal {
    public abstract void Speak(); // Abstract method
}

class Dog : Animal {
    public override void Speak() {
        Console.WriteLine("The dog barks.");
    }
}

class Program {
    static void Main() {
        Animal myDog = new Dog();
        myDog.Speak(); // Outputs: The dog barks.
    }
}

実践課題

実践課題

抽象メソッド CalculateArea() を持つ抽象クラス Shape を作成します。CalculateArea() を実装する派生クラス Rectangle と Circle を作成します。例:

using System;

abstract class Shape {
    public abstract double CalculateArea();
}

class Rectangle : Shape {
    public double Width { get; set; }
    public double Height { get; set; }

    public override double CalculateArea() {
        return Width * Height;
    }
}

class Circle : Shape {
    public double Radius { get; set; }

    public override double CalculateArea() {
        return Math.PI * Radius * Radius;
    }
}

class Program {
    static void Main() {
        Shape rectangle = new Rectangle { Width = 4, Height = 5 };
        Shape circle = new Circle { Radius = 3 };

        Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
        Console.WriteLine("Circle Area: " + circle.CalculateArea());
    }
}

ポリモーフィズムのベストプラクティス

ポリモーフィズムのベストプラクティス

ベストプラクティスをいくつか紹介します:

  • ポリモーフィズムを使用してコードをシンプルにし、重複を避けます。
  • 派生クラスで特定の動作が必要なメソッドだけをオーバーライドします。
  • 派生クラス間で共有するインターフェースには、抽象クラスと抽象メソッドを使用します。

ヒント: ポリモーフィズムにより、コードの拡張と保守が容易になります。

よくできました!

よくできました!

おめでとうございます!ポリモーフィズムとメソッドのオーバーライドを使用して、柔軟で再利用可能なコードを記述する方法を学びました。次のレッスンでは、インターフェースを使用して抽象化を実現し、複数の動作を実装する方法について学びます。引き続きコーディングしましょう!

ポリモーフィズムとメソッドのオーバーライド — イラスト10

よくある質問

「ポリモーフィズムとメソッドのオーバーライド」レッスンは無料ですか?

はい。「ポリモーフィズムとメソッドのオーバーライド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全7レッスンが含まれています。

「ポリモーフィズムとメソッドのオーバーライド」で何を学びますか?

メソッドのオーバーライドによって柔軟で再利用可能なコードを作るポリモーフィズムを身につけます ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン7/7です。

「ポリモーフィズムとメソッドのオーバーライド」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. オブジェクト指向プログラミングとは
  2. クラスとオブジェクトを定義する
  3. プロパティとメソッドを理解する
  4. C#のコンストラクター
  5. カプセル化とアクセス修飾子
  6. 継承:コードを再利用する
  7. ポリモーフィズムとメソッドのオーバーライド
← C# Academyに戻る