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:
- 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)iOblicz(int a, int b)).
- Wiele metod o tej samej nazwie w jednej klasie, różniących się liczbą lub typem parametrów (np.
- Polimorfizm dynamiczny (w czasie wykonania - Przesłanianie metod / Overriding):
- Klasa bazowa deklaruje metodę wirtualną (
virtualw C++/C#). - Klasa pochodna nadpisuje tę metodę za pomocą słowa kluczowego
override.
- Klasa bazowa deklaruje metodę wirtualną (
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.