C#中級コース-ポリモーフィズム


ポリモーフィズムは、同じ行動の複数の異なる症状または形態を持つ能力です。
ポリモーフィズムとは、複数の形態を意味します。オブジェクト指向プログラミングのパラダイムでは、ポリモーフィズムは「1つのインターフェイス、複数の関数」として表現されることがよくあります。
ポリモーフィズムは静的または動的にすることができます。静的ポリモーフィズムでは、関数の応答はコンパイル時に発生します。動的ポリモーフィズムでは、関数の応答は実行時に発生します。
C#では、ユーザー定義型を含むすべての型がObjectから継承されるため、すべての型はポリモーフィックです。

静的ポリモーフィズム

関数のオーバーロード

同じスコープ内に同じ関数名の複数の定義を含めることができます。関数の定義は互いに異なる必要があります。これは、パラメーターリスト内の異なるタイプのパラメーター、または異なる数のパラメーターである可能性があります。異なる戻り値の型で関数宣言をオーバーロードすることはできません。

举例1:
システムを使用します。
名前空間PolymorphismApplication
{ public class TestData { public int Add(int a、int b、int c){ return a + b + c; } public int Add(int a、int b){ return a + b; } } class Program { static void Main(string [] args){ TestData dataClass = new TestData(); int add1 = dataClass.Add(1、2); int add2 = dataClass.Add(1、2、3);

















        Console.WriteLine("add1 :" + add1);
        Console.WriteLine("add2 :" + add2);  
    }  
}  

}

例2:
システムの使用;
名前空間PolymorphismApplication
{ class Printdata { void print(int i){ Console.WriteLine( "出力整数型:{0}"、i); }





  void print(double f)
  {
     Console.WriteLine("输出浮点型: {0}" , f);
  }

  void print(string s)
  {
     Console.WriteLine("输出字符串: {0}", s);
  }
  static void Main(string[] args)
  {
     Printdata p = new Printdata();
     // 调用 print 来打印整数
     p.print(1);
     // 调用 print 来打印浮点数
     p.print(1.23);
     // 调用 print 来打印字符串
     p.print("Hello Runoob");
     Console.ReadKey();
  }

}
}

演算子のオーバーロード

C#は、C#の組み込み演算子を再定義またはオーバーロードできます。したがって、プログラマーはユーザー定義タイプの演算子を使用することもできます。オーバーロードされた演算子は、特別な名前を持つ関数であり、キーワード演算子とそれに続く演算子の記号によって定義されます。他の関数と同様に、オーバーロードされた演算子には戻り値の型とパラメーターリストがあります。
例:
public static Box operator +(Box b、Box c)
{ Box box = new Box(); box.length = b.length + c.length; box.breadth = b.breadth + c.breadth; box.height = b.height + c.height; return box; }上記の関数は、ユーザー定義クラスBoxの加算演算子(+)を実装します。2つのBoxオブジェクトのプロパティを追加し、追加されたBoxオブジェクトを返します。実際、関数を使用して演算子のオーバーロードを実装する方が良いと思います。box3= box1 + box2の代わりbox3 = BoxAdd(box1、box2);後者の方が読みやすく、直接見ることができます。簡単に変更できる関数の実装。












動的ポリモーフィズム

動的ポリモーフィズムは、抽象クラスと仮想メソッドによって実現されます。

おすすめ

転載: blog.csdn.net/euphorias/article/details/104922118