Polimorfizm
Poznaj zaawansowane koncepcje programowania obiektowego.
Polimorfizm to bezpłatna lekcja Python For Kids na CoddyKit. To lekcja 5 z 5. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python For Kids, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python For Kids zawiera 5 lekcji w sumie.
Polimorfizm
Witamy ponownie na lekcji programowania obiektowego (OOP)! Dzisiaj poznają Państwo polimorfizm w języku Python — zaawansowane pojęcie, które pozwala obiektom przyjmować różne postacie.

Czym jest polimorfizm?
Polimorfizm to podstawowe pojęcie w programowaniu obiektowym, które pozwala traktować obiekty różnych klas jako obiekty wspólnej klasy nadrzędnej. Umożliwia on różne działanie tej samej metody w zależności od obiektu, który ją wywołuje.
- Definicja: „Wiele postaci” — zdolność różnych obiektów do unikalnego reagowania na to samo wywołanie metody.
- Cel: Zwiększenie elastyczności i integracji kodu dzięki możliwości wzajemnego zastępowania obiektów.
Sprawdźmy, jak działa polimorfizm w języku Python!
Implementowanie polimorfizmu
Polimorfizm można osiągnąć w języku Python poprzez przesłanianie metod oraz korzystanie z wbudowanych funkcji, które działają z różnymi typami obiektów.
- Przesłanianie metod: Ponowne definiowanie w klasie potomnej metody, która została już zdefiniowana w klasie nadrzędnej.
- Wbudowane funkcje: Funkcje takie jak
len(), które działają z różnymi typami danych.
Przyjrzyjmy się dokładniej przesłanianiu metod.
Przesłanianie metod
Przesłanianie metod pozwala klasie potomnej dostarczyć konkretną implementację metody, która została już zdefiniowana w klasie nadrzędnej. Jest to kluczowy element polimorfizmu.
Przykład:
# Defines the Animal parent class with a speak method
class Animal:
def speak(self):
print("The animal makes a sound.") # Generic speak method
Tworzenie klas potomnych z przesłoniętymi metodami
Utwórzmy klasy potomne dziedziczące po Animal i przesłaniające metodę speak, aby zapewnić konkretne zachowania.
Przykład:
# Defines the Dog child class inheriting from Animal
class Dog(Animal):
def speak(self):
print("The dog barks.") # Overridden speak method
# Defines the Cat child class inheriting from Animal
class Cat(Animal):
def speak(self):
print("The cat meows.") # Overridden speak method
Używanie polimorfizmu z przesłoniętymi metodami
Teraz utwórzmy obiekty klas potomnych i sprawdźmy, jak za pomocą tej samej nazwy metody wykazują one różne zachowania.
Przykład:
# Creates objects of Dog and Cat classes
dog = Dog()
cat = Cat()
# Calls the speak method on both objects
dog.speak() # Output: The dog barks.
cat.speak() # Output: The cat meows.
Polimorfizm z użyciem wbudowanych funkcji
Polimorfizm nie ogranicza się do klas zdefiniowanych przez użytkownika. Wbudowane funkcje języka Python, takie jak len(), działają z różnymi typami danych, demonstrując zachowanie polimorficzne.
Przykład:
# Uses len() with a list
my_list = [1, 2, 3, 4]
print(len(my_list)) # Output: 4
# Uses len() with a string
my_string = "Hello"
print(len(my_string)) # Output: 5
# Uses len() with a dictionary
my_dict = {"a": 1, "b": 2}
print(len(my_dict)) # Output: 2
Przykładowy program: obliczanie pól figur
Utwórzmy program obliczający pola różnych figur za pomocą polimorfizmu. Zdefiniujemy klasę nadrzędną Shape oraz klasy potomne Circle i Rectangle, które przesłaniają metodę area.
Kod:
# Defines the Shape parent class with an area method
class Shape:
def area(self):
pass # Placeholder method
# Defines the Circle child class inheriting from Shape
class Circle(Shape):
def __init__(self, radius):
self.radius = radius # Sets the radius of the circle
def area(self):
return 3.14 * self.radius ** 2 # Calculates area of the circle
# Defines the Rectangle child class inheriting from Shape
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width # Sets the width of the rectangle
self.height = height # Sets the height of the rectangle
def area(self):
return self.width * self.height # Calculates area of the rectangle
# Creates objects of Circle and Rectangle classes
circle = Circle(5)
rectangle = Rectangle(4, 6)
# Calculates and prints areas using polymorphism
print("Circle Area:", circle.area()) # Output: Circle Area: 78.5
print("Rectangle Area:", rectangle.area()) # Output: Rectangle Area: 24
# Defines the Vehicle parent class with a move method
class Vehicle:
def move(self):
print("The vehicle moves.")
# Defines the Bicycle child class inheriting from Vehicle
class Bicycle(Vehicle):
def move(self):
print("The bicycle pedals forward.")
# Defines the Airplane child class inheriting from Vehicle
class Airplane(Vehicle):
def move(self):
print("The airplane flies in the sky.")
# Creates objects of Bicycle and Airplane classes
bike = Bicycle()
plane = Airplane()
# Calls the move method on both objects
bike.move()
plane.move()
Świetna robota!
Nauczył(a) się Pan/Pani, czym jest polimorfizm w języku Python i jak pozwala on obiektom różnych klas unikalnie reagować na te same wywołania metod. Polimorfizm zwiększa elastyczność i skalowalność kodu, ułatwiając jego zarządzanie i rozwijanie. Proszę dalej ćwiczyć, tworząc kolejne klasy i metody wykorzystujące zachowanie polimorficzne, aby pogłębiać swoje zrozumienie!

Często zadawane pytania
Czy lekcja „Polimorfizm” jest bezpłatna?
Tak — pełny tekst „Polimorfizm” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python For Kids, przejdź na CoddyKit PRO. Kurs Python For Kids zawiera 5 lekcji w sumie.
Co nauczysz się w „Polimorfizm”?
Poznaj zaawansowane koncepcje programowania obiektowego. Ćwiczysz Python For Kids z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python For Kids?
Nie wymagamy żadnego doświadczenia. Python For Kids w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 5 z 5.
Ile czasu zajmuje lekcja „Polimorfizm”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python For Kids?
Tak. Każda lekcja Python For Kids zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wprowadzenie do programowania obiektowego
- Tworzenie klas i obiektów
- Dziedziczenie
- Hermetyzacja
- Polimorfizm