class Subclass : Superclass {
override func method() { /* ... */ }
}
let instance = Subclass()
instance.method() // I want to call Superclass.method() not Subclass.method()
Dans ce cas, comment puis-je appeler Superclass.method() ?
class Subclass : Superclass {
override func method() { /* ... */ }
}
let instance = Subclass()
instance.method() // I want to call Superclass.method() not Subclass.method()
Dans ce cas, comment puis-je appeler Superclass.method() ?
Tu ne peux pas. Quand vous utilisez le override
vous indiquez au compilateur d'autoriser la modification d'une méthode héritée dans votre sous-classe. Cela signifie que les instances de la sous-classe n'auront aucune connaissance de l'implémentation de la méthode de la superclasse surchargée.
Même si vous lancez un Subclass
instance à Superclass
le type réel de l'instance sera toujours Subclass
donc si vous le faites (instance as Superclass).method()
il exécutera quand même la méthode surchargée.
Si vous voulez pouvoir appeler l'implémentation de la superclasse à partir de votre Subclass
vous devrez créer une autre fonction pour les instances Subclass
plutôt que de remplacer method
de Superclass
.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.