C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のポリモーフィズム(多態性)とは?静的と動的な違いをわかりやすく解説

C#におけるポリモーフィズム(多態性)は、同じインターフェースでありながら異なる振る舞いを実現できるオブジェクト指向プログラミングの重要な概念です。ポリモーフィズムには大きく分けて「静的(スタティック)」と「動的(ダイナミック)」の2種類があります。

静的ポリモーフィズムでは、関数への応答がコンパイル時に決定されます。一方、動的ポリモーフィズムでは、応答が実行時(ランタイム)に決定され、これは「遅延バインディング(レイトバインディング)」とも呼ばれます。

コンパイル時ポリモーフィズム(静的バインディング)

コンパイル時にオブジェクトと関数を結び付ける仕組みを「早期バインディング(アーリーバインディング)」または「静的バインディング」と呼びます。代表的な実装方法がメソッドオーバーロードで、同じ名前のメソッドでも引数の型や数が異なれば、それぞれ別の処理として定義できます。

実行時ポリモーフィズム(動的バインディング)

実行時ポリモーフィズムは「動的バインディング」や「遅延バインディング」とも呼ばれ、メソッドオーバーライドによって実現されます。継承関係にあるクラス間で基底クラスのメソッドを派生クラスが上書きすることで、実行時に適切なメソッドが呼び出される仕組みです。

ここからは、コンパイル時ポリモーフィズムの一例として、メソッドオーバーロードを実装したサンプルコードを見ていきましょう。

サンプルコード

using System;

namespace PolymorphismApplication {
    class Printdata {
        void print(int i) {
            Console.WriteLine("Printing int: {0}", i);
        }

        void print(double f) {
            Console.WriteLine("Printing float: {0}", f);
        }

        void print(string s) {
            Console.WriteLine("Printing string: {0}", s);
        }

        static void Main(string[] args) {
            Printdata p = new Printdata();

            // 整数を出力するprintを呼び出し
            p.print(5);

            // 浮動小数点数を出力するprintを呼び出し
            p.print(500.263);

            // 文字列を出力するprintを呼び出し
            p.print("Hello C#");
            Console.ReadKey();
        }
    }
}

このコードでは、Printdataクラス内に同じ名前のprintメソッドを3つ定義しています。引数の型がそれぞれintdoublestringと異なるため、メソッドオーバーロードとして成立します。呼び出し側では渡す引数の型に応じて、コンパイラが自動的に適切なメソッドを選択します。

実行結果

Printing int: 5
Printing float: 500.263
Printing string: Hello C#

このように、同じメソッド名でも引数の型によって異なる処理が実行されるのが静的ポリモーフィズムの特徴です。実行時ポリモーフィズム(メソッドオーバーライド)と組み合わせて使うことで、柔軟で拡張性の高いC#プログラムを構築できます。

  1. IPアドレスとは?仕組み・種類・確認方法をわかりやすく解説

    IPアドレス(Internet Protocol address)とは、ネットワークに接続された機器を識別するための番号のことです。IPアドレスを持つことで、デバイスはインターネットに代表されるIPベースのネットワーク上で、他のデバイスと通信できるようになります。 IPアドレスの見た目 一般的なIPアドレスは、次のような形式で表記されます。 151.101.65.121 また、次のようにアルファベットを含む形式のIPアドレスを目にすることもあります。 2001:4860:4860::8844 IPアドレスの役割と仕組み IPアドレスは、インターネット上のネットワーク機器に対して「身元」を与える

  2. Windows 11 SEとは?教育向けOSの特徴・入手方法・対応アプリを徹底解説

    ChromebookとChrome OSが教育市場を大きく席巻する中、Microsoftは長年にわたりこの分野への本格参入を模索してきました。その切り札となるのが「Windows 11 SE」です。このOSはK-8(幼稚園〜中学校段階)の教室を想定して設計されており、使いやすさ、高いセキュリティ、そして低価格ながら性能が限られたPCへの適合性を重視しています。開発にあたってMicrosoftは、教育者、学校のIT担当者、管理者と緊密に連携しました。 Windows 11 SEは、同OS専用に設計された特別なデバイス上で動作することを前提としています。その代表格が、249ドルから提供されるMi