Przejdź do treści głównej
INF.04Programowanie Obiektowe i Paradygmaty (OOP)

Polimorfizm (Wielopostaciowość w OOP)

Cecha programowania obiektowego pozwalająca na jednakowe traktowanie obiektów różnych klas pochodnych za pośrednictwem wspólnego interfejsu lub klasy bazowej z różną implementacją zachowań.

Czym jest polimorfizm?

Polimorfizm (Polymorphism – wielopostaciowość) umożliwia wywołanie tej samej metody na referencji do klasy bazowej, podczas gdy rzeczywisty wykonany kod zależy od typu obiektu wskazywanego w czasie działania programu (późne/dynamiczne wiązanie - Dynamic Binding).

Dwa rodzaje polimorfizmu na egzaminie:

  1. Polimorfizm statyczny (w czasie kompilacji - Przeciążanie metod / Overloading):
    • Wiele metod o tej samej nazwie w jednej klasie, różniących się liczbą lub typem parametrów (np. Oblicz(int a) i Oblicz(int a, int b)).
  2. Polimorfizm dynamiczny (w czasie wykonania - Przesłanianie metod / Overriding):
    • Klasa bazowa deklaruje metodę wirtualną (virtual w C++/C#).
    • Klasa pochodna nadpisuje tę metodę za pomocą słowa kluczowego override.
CSHARP
public abstract class Zwierze {
    public abstract void DajGlos(); // Metoda polimorficzna
}
public class Pies : Zwierze {
    public override void DajGlos() => Console.WriteLine("Hau hau!");
}
public class Kot : Zwierze {
    public override void DajGlos() => Console.WriteLine("Miau!");
}

// Wywołanie polimorficzne:
List<Zwierze> zwierzaki = new() { new Pies(), new Kot() };
foreach (Zwierze z in zwierzaki) {
    z.DajGlos(); // Wypisze: Hau hau!, a następnie Miau!
}

Pułapki na egzaminie INF.04:

  • Overloading (Przeciążanie): Ta sama klasa, ta sama nazwa, inne parametry.
  • Overriding (Przesłanianie): Klasa bazowa i pochodna, ta sama nazwa, te same parametry i typ zwracany.

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Polimorfizm (Wielopostaciowość w OOP) lub rozpocznij trening.