Sobes.tech
Junior — Middle

Čo sa zmení v správaní alebo dizajne, ak bude odvodená trieda označená ako nefinal?

sobes.tech AI

Odpoveď od AI

Ak je trieda odvodená deklarovaná ako final v Swift, znamená to, že z nej nie je možné vytvárať podtriedy. Ak odstránite final, trieda sa stáva otvorenou pre dedičstvo.

Zmeny v správaní a dizajne:

  • Dedičstvo: Trieda môže byť rozšírená, môžu byť vytvorené podtriedy, metódy môžu byť prepísané.
  • Bezpečnosť: final zabraňuje náhodným zmenám správania prostredníctvom dedičstva, čo zvyšuje spoľahlivosť.
  • Optimalizácia: Kompilátor môže optimalizovať volania metód final triedy, pretože vie, že nebudú prepísané.

Príklad:

final class A {
    func greet() { print("Hello") }
}

// Chyba: nemožno dediť od `final` triedy
// class B: A {}

// Ak odstránime `final`:
class A {
    func greet() { print("Hello") }
}

class B: A {
    override func greet() { print("Hi") }
}