2 votes

Comment appeler la super méthode ?

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() ?

4voto

Dávid Pásztor Points 21448

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.com

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.

Powered by:

X