final
modyfikator opisano w Swift Language Reference, który mówi
końcowego
Zastosować tego modyfikatora do klasy lub do właściwości, metody lub członka indeksem z klasy. Jest zastosowany do klasy, aby wskazać, że klasa nie może być poddana podklasie. Jest zastosowany do właściwości, metody lub indeksu dolnego klasy, aby wskazać, że element członkowski klasy nie może zostać nadpisany w żadnej podklasie.
Oznacza to, bez final
możemy napisać:
class A {
var x: Int {return 5}
}
class B : A {
override var x: Int {return 3}
}
var b = B()
assert(b.x == 3)
ale jeśli używamy final
w klasie A
class A {
final var x: Int {return 5}
}
class B : A {
// COMPILER ERROR
override var x: Int {return 3}
}
wtedy to się dzieje:
$ swift final.swift
final.swift:6:18: error: var overrides a 'final' var
override var x: Int {return 3}
^
final.swift:2:15: note: overridden declaration is here
final var x: Int {return 5}