Dziedziczenie w Pythonie – podstawy i utrwalenie

Wprowadzenie

Dziedziczenie to jedna z najważniejszych cech programowania obiektowego. Pozwala tworzyć nowe klasy na bazie już istniejących. Dzięki temu możemy unikać powtarzania kodu, rozszerzać istniejące funkcjonalności oraz lepiej organizować program.

Jeżeli klasa B dziedziczy po klasie A, oznacza to, że klasa B przejmuje jej atrybuty i metody, a także może dodawać własne.

Po co stosować dziedziczenie?

Dziedziczenie przydaje się wszędzie tam, gdzie mamy obiekty o cechach wspólnych oraz cechach dodatkowych. Przykład: – Wszystkie samochody mają markę i przebieg. – Samochód elektryczny ma także pojemność baterii. Klasa bazowa: Samochod Klasa pochodna: ElektrycznySamochod

Podstawowa składnia

class KlasaBazowa:
    def metoda(self):
        print("Jestem metodą z klasy bazowej.")

class KlasaPochodna(KlasaBazowa):
    pass

KlasaPochodna nie ma swojej własnej metody, ale dziedziczy metodę z klasy bazowej.

Wywołanie:

ob = KlasaPochodna()
ob.metoda()

Nadpisywanie metod (override)

Klasa pochodna może zmienić zachowanie metody z klasy bazowej.

class Zwierze:
    def dzwiek(self):
        print("Zwierzę wydaje dźwięk")

class Pies(Zwierze):
    def dzwiek(self):
        print("Hau hau!")

Rozszerzanie funkcjonalności rodzica – super()

Czasem chcemy wykonać kod rodzica, ale dodać coś więcej.

class Osoba:
    def __init__(self, imie):
        self.imie = imie

class Student(Osoba):
    def __init__(self, imie, indeks):
        super().__init__(imie)
        self.indeks = indeks

Super() odwołuje się do klasy bazowej.


Ćwiczenia praktyczne

Ćwiczenie 1

Utwórz klasę Pojazd z polami: marka i rok. Dodaj metodę opis(). Następnie utwórz klasę Rower, dziedziczącą po Pojazd, i dodaj do niej pole rodzaj (np. „górski”). Stwórz obiekt Rower i wywołaj metodę opis() oraz wypisz rodzaj.

Ćwiczenie 2

Napisz klasę Urządzenie z metodą wlacz(), która wypisuje tekst „Urządzenie włączone”. Utwórz klasę Laptop, która nadpisuje tę metodę wypisując: „Laptop uruchamia system…”. Sprawdź działanie obu klas.

Ćwiczenie 3

Napisz klasę Bohater z polem imie i metodą przedstaw_sie(). Napisz klasę Mag, która ma dodatkowe pole mana. Klasa Mag powinna korzystać z super() w konstruktorze. Stwórz obiekt Maga i wyświetl jego dane.

Ćwiczenie 4

Napisz klasę Figura, która ma metodę pole() wypisującą tekst ogólny, np. „Pole nieokreślone”. Utwórz klasę Kwadrat, która nadpisuje tę metodę tak, aby obliczała pole kwadratu o boku podanym podczas tworzenia obiektu.


Ćwiczenie teoretyczne

Wyjaśnij własnymi słowami, czym jest dziedziczenie w programowaniu obiektowym i dlaczego jest przydatne. Opisz też przykład z życia codziennego, który można przedstawić jako dziedziczenie obiektów.