Il modificatore final
è descritto nel Swift Language Reference, che dice
finale
Applicare questo modificatore ad una classe o ad una proprietà, un metodo o membro pedice di una classe. Viene applicato a una classe per indicare che la classe non può essere sottoclassata. Viene applicato a una proprietà, un metodo o un indice di una classe per indicare che un membro della classe non può essere sovrascritto in alcuna sottoclasse.
Questo significa senza final
possiamo scrivere:
class A {
var x: Int {return 5}
}
class B : A {
override var x: Int {return 3}
}
var b = B()
assert(b.x == 3)
ma se usiamo final
in classe A
class A {
final var x: Int {return 5}
}
class B : A {
// COMPILER ERROR
override var x: Int {return 3}
}
allora questo accade:
$ 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}
fonte
2016-03-05 19:42:28