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.