Swift Academy · Lekcja

Dziedziczenie klas i słowo kluczowe super

Tworzenie podklas, wywoływanie super.init() i rozszerzanie zachowania klasy bazowej.

Lekcja 1 z 412 kroki

Dziedziczenie klas i słowo kluczowe super to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 4. 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 Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Wprowadzenie

Klasy obsługują dziedziczenie — podklasa może rozszerzać lub specjalizować nadklasę. Umożliwia to ponowne użycie kodu i polimorfizm, czyli podstawowe filary programowania obiektowego.

Definiowanie podklasy

```swift class Animal { var name: String init(name: String) { self.name = name } func speak() { print("...") } } class Dog: Animal { func fetch() { print("\(name) fetches!") } } let d = Dog(name: "Rex") d.speak() // "..." d.fetch() // "Rex fetches!" ```

super.init() — wymagane wywołanie

```swift class Vehicle { var speed: Double init(speed: Double) { self.speed = speed } } class Car: Vehicle { var brand: String init(brand: String, speed: Double) { self.brand = brand super.init(speed: speed) // must call super } } ```

Inicjalizacja dwuetapowa

Zasady dwuetapowej inicjalizacji w Swift: 1. Wszystkie *własne* przechowywane właściwości muszą zostać ustawione *przed* wywołaniem `super.init()` 2. Po wywołaniu `super.init()` można dostosować odziedziczone właściwości Zapobiega to użyciu niezainicjalizowanej pamięci.

Wywoływanie metod nadklasy

```swift class Shape { func draw() { print("Drawing shape") } } class Circle: Shape { override func draw() { super.draw() // call parent implementation print("Drawing circle") } } ```

Dziedziczenie właściwości

Podklasy dziedziczą wszystkie właściwości nadklasy: ```swift class Person { var name: String = "" var age: Int = 0 } class Employee: Person { var company: String = "" } let e = Employee() e.name = "Alice" e.company = "Acme" ```

Inicjalizatory designated a convenience

• *Designated* — w pełni inicjalizuje wszystkie właściwości; wywołuje `super.init()` • *Convenience* — deleguje do innego init za pomocą `self.init()` ```swift convenience init(name: String) { self.init(name: name, age: 0) // delegates to designated } ```

required init

Oznacz init jako `required`, aby wymusić jego implementację we wszystkich podklasach: ```swift class Base { required init(id: Int) { ... } } class Sub: Base { required init(id: Int) { super.init(id: id) } } ``` Jest to często stosowane, gdy metoda fabrykująca musi tworzyć instancje za pośrednictwem protokołu.

Hierarchia klas i typ

```swift let a: Animal = Dog(name:"Buddy") print(a is Dog) // true print(a is Animal) // true ``` `Dog` IS-A `Animal` — instancje podklasy spełniają wymagania typu nadklasy.

Dziedziczenie pojedyncze

Klasy Swift obsługują wyłącznie *pojedyncze* dziedziczenie, czyli jedną nadklasę. Klasa może jednak być zgodna z wieloma protokołami: ```swift class MyVC: UIViewController, UITableViewDelegate, UITableViewDataSource { } ``` Protokoły są mechanizmem Swift służącym do realizacji wielokrotnego dziedziczenia zachowania.

Szybkie sprawdzenie

W inicjalizatorze designated podklasy kiedy należy wywołać `super.init()`?

Podsumowanie

Najważniejsze informacje: • Tworzenie podklasy za pomocą `class Sub: Super` • Wywołanie `super.init()` po ustawieniu własnych właściwości • Inicjalizacja dwuetapowa: najpierw własne właściwości, potem nadklasa • `super.method()` wywołuje implementację z nadklasy • Swift obsługuje pojedyncze dziedziczenie; protokoły służą do realizacji wielu zachowań Dalej: override, final i zapobieganie dziedziczeniu.
Bezpłatny start

Ucz się Swift dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
122
Lekcje
409

Często zadawane pytania

Czy lekcja „Dziedziczenie klas i słowo kluczowe super” jest bezpłatna?

Tak — pełny tekst „Dziedziczenie klas i słowo kluczowe super” 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 Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Dziedziczenie klas i słowo kluczowe super”?

Tworzenie podklas, wywoływanie super.init() i rozszerzanie zachowania klasy bazowej. Ćwiczysz Swift Academy 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ąć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy 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 1 z 4.

Ile czasu zajmuje lekcja „Dziedziczenie klas i słowo kluczowe super”?

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 Swift Academy?

Tak. Każda lekcja Swift Academy 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

  1. Dziedziczenie klas i słowo kluczowe super
  2. override, final i zapobieganie dziedziczeniu
  3. Rzutowanie typów: is, as?, as! i as
  4. Destruktory i cykl życia pamięci
← Powrót do Swift Academy