Czym jest polimorfizm w programowaniu?
sobes.tech AI
Odpowiedź od AI
Polimorfizm to zdolność obiektów różnych klas do reagowania na ten sam wywołanie metody w różny sposób. Osiąga się to poprzez użycie dziedziczenia, klas abstrakcyjnych i interfejsów. W C# polimorfizm objawia się przez nadpisywanie (overriding) metod klasy bazowej w klasach pochodnych oraz przez przeciążanie (overloading) metod.
Przykłady polimorfizmu:
-
Nadpisywanie metod (Polimorfizm w czasie wykonywania): Klasa pochodna dostarcza własną implementację metody zadeklarowanej w klasie bazowej. W tym celu w klasie bazowej używa się słowa kluczowego
virtual, a w klasie pochodnejoverride.// Klasa bazowa class Shape { // Wirtualna metoda, którą można nadpisać public virtual void Draw() { // Domyślna implementacja } } // Klasa pochodna 1 class Circle : Shape { // Nadpisanie metody Draw public override void Draw() { // Implementacja dla koła } } // Klasa pochodna 2 class Square : Shape { // Nadpisanie metody Draw public override void Draw() { // Implementacja dla kwadratu } }W tym przypadku można utworzyć listę obiektów
Shapei wywołać metodęDrawdla każdego z nich, a zostanie wywołana konkretna implementacja dla każdego typu figury. -
Przeciążanie metod (Polimorfizm w czasie kompilacji): Kilka metod o tej samej nazwie, ale z różnymi sygnaturami (liczba lub typy parametrów) w jednej klasie.
class Calculator { // Przeciążona metoda Add (dla int) public int Add(int x, int y) { return x + y; } // Przeciążona metoda Add (dla double) public double Add(double x, double y) { return x + y; } }
Polimorfizm sprzyja tworzeniu bardziej elastycznego, rozszerzalnego i łatwego w utrzymaniu kodu. Pozwala pisać kod ogólny, który może działać z obiektami różnych typów.