Как вызвать супер метод? - PullRequest
0 голосов
/ 06 июня 2018
class Subclass : Superclass {
    override func method() { /* ... */ }
}

let instance = Subclass()
instance.method() // I want to call Superclass.method() not Subclass.method()

Учитывая этот сценарий, как я могу вызвать Superclass.method ()?

1 Ответ

0 голосов
/ 06 июня 2018

Вы не можете.Когда вы используете ключевое слово override, вы указываете компилятору разрешить изменение унаследованного метода в вашем подклассе.Это означает, что экземпляры подкласса не будут знать о реализации переопределенного метода суперкласса.

Даже если вы приведете экземпляр Subclass к Superclass, фактический тип экземпляра все равно будет Subclass, поэтому, если вы выполните (instance as Superclass).method(), он все равно выполнит переопределенный метод.

Если вы хотите иметь возможность вызывать реализацию суперкласса из ваших экземпляров Subclass, вам нужно будет создать другую функцию дляSubclass вместо переопределения method из Superclass.

...