Latest web development tutorials

C # polimorfisme

Polimorfisme berarti bahwa ada beberapa bentuk.Dalam paradigma pemrograman berorientasi objek, polimorfisme sering dinyatakan sebagai "satu antarmuka, beberapa fungsi."

Polimorfisme bisa statis atau dinamis.polimorfisme statis dalam fungsi respon terjadi pada waktu kompilasi.Dalampolimorfisme dinamis, fungsi respon terjadi pada saat runtime.

polimorfisme statis

Pada waktu kompilasi, fungsi mekanisme koneksi dan benda-benda yang disebut ikatan, juga dikenal sebagai mengikat statis. C # menawarkan dua teknik untuk mengimplementasikan polimorfisme statis. Mereka adalah:

  • fungsi overloading
  • Overloading Operator

Operator overloading akan bahas dalam bagian berikutnya, kita akan membahas fungsi overloading berikut.

fungsi overloading

Anda bisa berada di kisaran yang sama untuk nama fungsi yang sama memiliki beberapa definisi. fungsi didefinisikan harus berbeda satu sama lain bisa menjadi daftar parameter jenis parameter, juga bisa menjadi sejumlah parameter yang berbeda. Anda tidak dapat kelebihan beban hanya dengan jenis kembalinya fungsi deklarasi.

Contoh berikut menunjukkan beberapacetak fungsi yang sama (),untuk mencetak berbagai jenis data:

menggunakan System;
namespace PolymorphismApplication
{
   kelas Printdata
   {
      kekosongan cetak (int i)
      {
         Console.WriteLine ( "Percetakan int: {0}", i);
      }

      kekosongan cetak (double f)
      {
         Console.WriteLine ( "Percetakan float: {0}", f);
      }

      kekosongan cetak (string s)
      {
         Console.WriteLine ( "Percetakan tali: {0}", s);
      }
      static void Main (string [] args)
      {
         Printdata p = baru Printdata ();
         // Memanggil cetak untuk mencetak p.print bilangan bulat (5);
         // Memanggil cetak untuk mencetak mengapung p.print (500,263);
         // Invoke mencetak ke print string yang p.print ( "Hello C ++");
         Console.ReadKey ();
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Percetakan int: 5
Percetakan float: 500,263
Percetakan tali: Hello C ++

polimorfisme dinamis

C # memungkinkan Anda untuk menggunakanabstrak kata kunci untuk menciptakan sebuah kelas abstrak, implementasi antarmuka menyediakan untuk bagian dari kelas.Ketika kelas turunan mewarisi dari kelas abstrak untuk mencapai lengkap.kelas abstrak berisi metode abstrak, metode abstrak dapat diimplementasikan sebagai kelas turunan.Kelas turunan memiliki fungsi yang lebih khusus.

Harap dicatat bahwa berikut ini adalah beberapa aturan untuk kelas abstrak:

  • Anda tidak dapat membuat sebuah instance dari kelas abstrak.
  • Anda tidak dapat mendeklarasikan metode abstrak luar kelas abstrak.
  • Dengan menempatkan di depan kata kunci definisi kelasdisegel, kelas dapat dinyatakan sebagai kelas disegel.Ketika kelas dinyatakandisegel, tidak dapat diwariskan.Kelas abstrak tidak dapat dinyatakan sebagai disegel.

Program berikut menunjukkan kelas abstrak:

menggunakan System;
namespace PolymorphismApplication
{
   abstrak kelas Shape
   {
      public abstract int daerah ();
   }
   kelas Rectangle: Shape
   {
      swasta panjang int;
      int lebar swasta;
      Rectangle publik (int a = 0, int b = 0)
      {
         panjang = a;
         width = b;
      }
      public override int daerah ()
      { 
         Console.WriteLine ( "Rectangle kelas area:");
         kembali (lebar * panjang); 
      }
   }

   kelas RectangleTester
   {
      static void Main (string [] args)
      {
         Rectangle r = Rectangle baru (10, 7);
         ganda = r.area ();
         Console.WriteLine ( "Ukuran: {0}", a);
         Console.ReadKey ();
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Rectangle Ukuran Kelas:
Area: 70

Bila fungsi didefinisikan dalam kebutuhan kelas untuk diterapkan di kelas turunan, Anda dapat menggunakanmetode virtual.metode virtual dinyatakan menggunakanvirtual kata kunci.metode virtual dapat diimplementasikan secara berbeda di kelas mewarisi berbeda. Panggilan ke metode virtual terjadi pada saat runtime.

polimorfisme dinamis dicapai melaluikelas abstrak dan metode virtual.

Program berikut menunjukkan titik ini:

menggunakan System;
namespace PolymorphismApplication
{
   kelas Shape 
   {
      int lebar dilindungi, tinggi;
      Bentuk umum (int a = 0, int b = 0)
      {
         width = a;
         height = b;
      }
      publik maya int daerah ()
      {
         Console.WriteLine ( "daerah induk:");
         return 0;
      }
   }
   kelas Rectangle: Shape
   {
      Rectangle publik (int a = 0, int b = 0): dasar (a, b)
      {

      }
      public override int daerah ()
      {
         Console.WriteLine ( "Rectangle kelas area:");
         kembali (lebar * tinggi); 
      }
   }
   Segitiga kelas: Shape
   {
      publik Segitiga (int a = 0, int b = 0): dasar (a, b)
      {
      
      }
      public override int daerah ()
      {
         Console.WriteLine ( "Segitiga kelas area:");
         kembali (lebar * tinggi / 2); 
      }
   }
   kelas Caller
   {
      public void CallArea (Shape sh)
      {
         int a;
         a = sh.area ();
         Console.WriteLine ( "Ukuran: {0}", a);
      }
   }  
   kelas Tester
   {
      
      static void Main (string [] args)
      {
         Caller c = new pemanggil ();
         Rectangle r = Rectangle baru (10, 7);
         Segitiga t = segitiga baru (10, 5);
         c.CallArea (r);
         c.CallArea (t);
         Console.ReadKey ();
      }
   }
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Rectangle Ukuran Kelas:
Area: 70
daerah kelas Segitiga:
Area: 25