Swift Academy · Oppitunti

Luokkaperintä ja super-avainsana

Aliluokkien luominen, super.init()-kutsun käyttäminen ja yliluokan toiminnallisuuden laajentaminen.

Oppitunti 1/412 vaihetta

Luokkaperintä ja super-avainsana on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Tervetuloa

Luokat tukevat perintää — aliluokka voi laajentaa yliluokkaa tai erikoistaa sitä. Tämä mahdollistaa koodin uudelleenkäytön ja polymorfismin, jotka ovat olio-ohjelmoinnin keskeisiä peruspilareita.

Aliluokan määrittäminen

```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() — pakollinen kutsu

```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 } } ```

Kaksivaiheinen alustaminen

Swiftin kaksivaiheisen alustuksen säännöt: 1. Kaikki *omat* tallennetut ominaisuudet on asetettava *ennen* `super.init()`-kutsua 2. `super.init()`-kutsun jälkeen voit mukauttaa perittyjä ominaisuuksia Näin estetään alustamattoman muistin käyttäminen.

Super-metodien kutsuminen

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

Ominaisuuksien periytyminen

Aliluokat perivät kaikki yliluokan ominaisuudet: ```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" ```

Designated- ja convenience-alustajat

• *Designated* — alustaa kaikki ominaisuudet; kutsuu `super.init()` • *Convenience* — delegoi toiselle alustajalle käyttämällä `self.init()` ```swift convenience init(name: String) { self.init(name: name, age: 0) // delegates to designated } ```

required init

Merkitkää init `required`-määritteellä pakottaaksenne kaikki aliluokat toteuttamaan sen: ```swift class Base { required init(id: Int) { ... } } class Sub: Base { required init(id: Int) { super.init(id: id) } } ``` Yleinen ratkaisu, kun tehdasmetodin täytyy luoda instansseja protokollan kautta.

Luokkahierarkia ja tyyppi

```swift let a: Animal = Dog(name:"Buddy") print(a is Dog) // true print(a is Animal) // true ``` `Dog` ON `Animal` — aliluokan instanssit täyttävät yliluokan tyypille asetetut vaatimukset.

Yksittäinen periytyminen

Swiftin luokat tukevat vain *yksittäistä* periytymistä (yksi yliluokka). Luokka voi kuitenkin noudattaa useita protokollia: ```swift class MyVC: UIViewController, UITableViewDelegate, UITableViewDataSource { } ``` Protokollat ovat Swiftin mekanismi käyttäytymisen moniperiytymistä varten.

Pikatarkistus

Milloin `super.init()` on kutsuttava aliluokan designated-alustajassa?

Kertaus

Tärkeimmät asiat: • Aliluokka määritellään muodossa `class Sub: Super` • Kutsukaa `super.init()` omien ominaisuuksien asettamisen jälkeen • Kaksivaiheinen alustus: ensin omat ominaisuudet, sitten yliluokka • `super.method()` kutsuu yliluokan toteutusta • Swiftissä on yksittäinen periytyminen; käyttäkää protokollia usean käyttäytymisen toteuttamiseen Seuraavaksi: override, final ja aliluokittamisen estäminen.
Aloita maksutta

Opi Swift tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”Luokkaperintä ja super-avainsana” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Luokkaperintä ja super-avainsana”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Luokkaperintä ja super-avainsana”?

Aliluokkien luominen, super.init()-kutsun käyttäminen ja yliluokan toiminnallisuuden laajentaminen. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.

Kuinka kauan ”Luokkaperintä ja super-avainsana”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Luokkaperintä ja super-avainsana
  2. override, final ja aliluokkien estäminen
  3. Tyyppimuunnokset: is, as?, as! ja as
  4. Deinitialisoijat ja muistin elinkaari
← Takaisin: Swift Academy