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ť:
finalzabraň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
finaltriedy, 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") }
}