Polimorfismul în C # - Top 2 Forme de polimorfism în C # cu cod

Cuprins:

Anonim

Introducere în polimorfism în C #

Polimorfismul este unul dintre principiile programării orientate pe obiecte. Poly înseamnă multiple și morphing înseamnă a suferi o transformare, polimorfism înseamnă astfel capacitatea de a lua mai multe forme.

Randamentul operatorilor variază în funcție de tipurile de operanzi, care este o formă de polimorfism cunoscută sub denumirea de supraîncărcare a operatorului. Aici operatorul poate lua mai multe forme pentru a produce rezultate diferite. Rezultatul funcțiilor variază în funcție de diferite tipuri și parametri de retur, ceea ce reprezintă o altă formă de polimorfism cunoscut sub denumirea de supraîncărcare. Aici, funcția ia mai multe forme pentru a produce mai multe rezultate.

Polimorfismul este utilizat pe scară largă pentru a implementa moștenirea. Obiectele care au o structură internă diferită pot implementa o interfață comună prin polimorfism. Următoarea diagramă ilustrează modul de lucru al polimorfismului:

Această cifră explică faptul că lutul este obiectul părinte din care sunt fabricate obiecte de ghiveci, castron și jucării. Toate aceste obiecte sunt diferite între ele, dar au proprietățile lutului. Aceste trei obiecte au forme diferite și sunt utilizate în moduri diferite chiar și atunci când sunt confecționate din același material argilat.

Forme de polimorfism

Mai jos sunt cele 2 forme ale polimorfismului:

1. Suprasarcina operatorului

Un operator poate oferi rezultate diferite în funcție de tipul de operanzi pe care operează. Aceasta se numește supraîncărcarea operatorului. De exemplu, operatorul "+" poate efectua adăugarea pe două întregi, în timp ce poate concatena două șiruri. Astfel, același operator poate fi utilizat în 2 moduri diferite. Operatorul de adăugare adaugă în general două numere. Cu toate acestea, în cazul numerelor complexe, adăugarea este un pic diferită, unde se adaugă separat părțile reale corespunzătoare și părțile imaginare. Iată un exemplu de cod care arată modul în care operatorul "+" poate fi supraîncărcat pentru a adăuga numere complexe:

Cod:

using System;
namespace Overload (
class Complex
(
public double x;
public double y;
// no-argument constructor
public Complex() ()
// parameterized constructor
public Complex(double real, double img)
(
x = real;
y = img;
)
// Overloading of Binary "+" operator
public static Complex operator + (Complex c1,
Complex c2)
(
Complex c3 = new Complex();
c3.x = c1.x + c2.x;
c3.y = c1.y + c2.y;
return c3;
)
// function to display result
public void display()
(
Console.WriteLine("(0) + (1)i", x, y);
)
)
class CalNum (
// Driver Code
static void Main(string() args)
(
Complex num1 = new Complex(2.5, 3.5);
Complex num2 = new Complex(1.2, 6.5);
Complex num3 = num1 + num2;
Console.Write("c1 = ");
num1.display();
Console.Write("c2 = ");
num2.display();
Console.Write("c3 = ");
num3.display();
)
)
)

ieşire:

Această ieșire ilustrează supraîncărcarea operatorului pentru a adăuga două numere complexe. Codul arată supraîncărcarea operatorului, precum și supraîncărcarea funcțiilor.

2. Supraîncărcarea funcției

O funcție poate oferi ieșiri diferite în funcție de numărul de parametri, precum și tipurile lor de retur și tipul de returnare a funcției. Codul menționat mai sus acoperă și supraîncărcarea funcțiilor folosind un constructor. În cod există 2 constructori; unul este constructorul implicit care este lăsat gol, în timp ce celălalt este un constructor parametrizat, care este utilizat pentru inițializarea numărului complex cu valorile menționate ca parametri.

Luând exemplul ilustrat în figură, funcția este modelarea lutului, iar direcția cursei este elementul furnizat pentru modelarea argilei. Pe baza diferitelor direcții de lovire, argila este transformată în ghiveci, bol și respectiv jucărie.

Cod:

using System;
using System.Collections.Generic;
public class Clay
(
// A few example members
public int Height ( get; set; )
public int strokeDirection ( get; set; )
// Virtual method
public virtual void Mould()
(
Console.WriteLine("Beginning to mould the clay");
)
)
class Pot : Clay
(
public override void Mould()
(
// Code to make a pot Console.WriteLine("Making a pot");
base.Mould();
)
)
class Bowl : Clay
(
public override void Mould()
(
// Code to make a bowl
Console.WriteLine("Making a bowl");
base.Mould();
)
)
class Toy : Clay
(
public override void Mould()
(
// Code to make a toy
Console.WriteLine("Making a toy");
base.Mould();
)
)
class Program
(
static void Main(string() args)
(
// Illustrating Polymorphism #1: a Pot, Bowl and Toy
// can all be used wherever Clay is expected. No cast is
// needed because an implicit conversion exists from a derived
// class to its base class.
var items = new List
(
new Pot(),
new Bowl(),
new Toy()
);
// Polymorphism at work #2: the virtual method Mould is
// invoked on each of the derived classes, not the base class.
foreach (var item in items)
(
item.Mould();
)
)
)

ieşire:

După cum ați observat în cod, clasa de argilă este clasa părinte a cărei clase de copii sunt clase de ghiveci, jucării și castroane. Metoda „Mold” este definită în clasa părinte, precum și în clasa copil cu aceeași semnătură funcțională. Prin urmare, atunci când un obiect al clasei copil este creat și se numește metoda Mold, metoda clasei de bază este suprasolicitată de metoda clasei copil. Astfel, vedem rezultatul metodei clasei de copii. Codul de mai sus arată metoda de supraîncărcare și de neîncărcare pentru a ilustra polimorfismul.

Punctele de reținut pentru polimorfism în c #

  1. Supraîncărcarea este diferită de Supraîncărcare. Supraîncărcarea are semnături diferite de funcții, în timp ce suprasolicitarea are aceleași semnături funcționale
  2. Polimorfismul se referă la schimbarea comportamentului unei superclase din subclasă.
  3. Moștenirea se referă la utilizarea structurii și comportamentului unei superclase dintr-o subclasă.

Următoarele sunt câteva dintre primele cheie:

  1. Polimorfismul este una dintre principalele paradigme ale programării orientate pe obiecte.
  2. Supraîncărcarea funcției modifică funcția conform tipurilor de retur și a parametrilor funcției din clasa moștenită.
  3. Supraîncărcarea operatorului modifică definiția operatorului conform parametrilor dați.
  4. Polimorfismul este utilizat pentru a pune în aplicare, decide în timpul rulării să apeleze la metoda clasei copilului, folosind o metodă de suprasolicitare.

Articole recomandate

Acesta este un ghid pentru Polimorfismul în C #. Aici vom discuta despre cele două forme de polimorfism în C # adică supraîncărcarea operatorului și supraîncărcarea funcției cu cod de probă. De asemenea, puteți consulta articolul următor pentru a afla mai multe -

  1. Ce este StringBuilder în C #
  2. Copiază constructor în C #
  3. Ce este Multithreading în C #?
  4. Ce este modelul de design în C #?
  5. Tipuri de constructor în C # cu implementarea codului
  6. Ghid complet pentru multithreading în C #