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

Polimorfizm (Polymorphism)

Zdolność obiektów różnych klas powiązanych hierarchią dziedziczenia do reagowania na to samo wywołanie metody w specyficzny dla siebie sposób.

1. Polimorfizm dynamiczny (w czasie działania - Runtime / Przesłanianie - Overriding):

Metoda zdefiniowana jako virtual w klasie bazowej jest nadpisywana (override) w klasach pochodnych. W czasie działania programu wywoływana jest właściwa implementacja na podstawie rzeczywistego typu obiektu.

CSHARP
public abstract class Ksztalt {
    public abstract double ObliczPole();
}
public class Kolo : Ksztalt {
    public double R { get; set; }
    public override double ObliczPole() => Math.PI * R * R;
}
public class Kwadrat : Ksztalt {
    public double A { get; set; }
    public override double ObliczPole() => A * A;
}

// Użycie polimorficzne:
List<Ksztalt> figury = new List<Ksztalt> { new Kolo { R = 2 }, new Kwadrat { A = 3 } };
foreach (var f in figury) {
    Console.WriteLine(f.ObliczPole()); // dynamiczne wywołanie właściwego wzoru!
}

2. Polimorfizm statyczny (w czasie kompilacji - Compile-time / Przeciążanie - Overloading):

Wiele metod o tej samej nazwie, ale różniących się liczbą lub typem parametrów w tej samej klasie.

Chcesz sprawdzić to pojęcie w praktyce?

Przeszukaj pytania z oficjalnych arkuszy CKE powiązane z hasłem Polimorfizm (Polymorphism) lub rozpocznij trening.