Dans Swift, quelqu'un peut-il expliquer comment remplacer une propriété sur une superclasse avec un autre objet sous-classé de la propriété d'origine?
Prenons cet exemple simple:
class Chassis {}
class RacingChassis : Chassis {}
class Car {
let chassis = Chassis()
}
class RaceCar: Car {
override let chassis = RacingChassis() //Error here
}
Cela donne l'erreur:
Cannot override with a stored property 'chassis'
Si j'ai un châssis comme 'var' à la place, j'obtiens l'erreur:
Cannot override mutable property 'chassis' of type 'Chassis' with covariant type 'RacingChassis'
La seule chose que j'ai pu trouver dans le guide sous "Propriétés de remplacement" indique que nous devons remplacer le getter et le setter, ce qui peut fonctionner pour changer la valeur de la propriété (si c'est 'var'), mais qu'en est-il de la modification de la classe de propriété ?
strong
propriété et j'obtenais une erreur en essayant de la remplacer - mais il semble que j'ai manqué que cela se traduit par un "optionnel implicitement déballé" (chassis!
) dans Swift, doncoverride var chassis : Chassis!
corrige ça.