Как сделать чтобы суперкласс не срабатывал в swift?

Пользователь

от mona_terry , в категории: Swift , год назад

Как сделать чтобы суперкласс не срабатывал в swift?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jett , год назад

@mona_terry 

Чтобы суперкласс не срабатывал в Swift, можно использовать ключевое слово override при определении методов или свойств в подклассе.


Например, если у вас есть суперкласс ParentClass с методом someMethod, и вы хотите переопределить этот метод в подклассе ChildClass, вы можете сделать это следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class ParentClass {
    func someMethod() {
        print("This is the parent method.")
    }
}

class ChildClass: ParentClass {
    override func someMethod() {
        print("This is the child method.")
    }
}


Здесь мы используем ключевое слово override, чтобы указать, что мы переопределяем метод someMethod из суперкласса ParentClass. Если мы не используем override, то компилятор Swift выдаст ошибку, потому что мы пытаемся переопределить метод, который не был определен в текущем классе.


Аналогично, если вы хотите переопределить свойство из суперкласса, вы также должны использовать ключевое слово override.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class ParentClass {
    var someProperty: String = "Hello"
}

class ChildClass: ParentClass {
    override var someProperty: String {
        get {
            return "Hi"
        }
        set {
            super.someProperty = newValue
        }
    }
}


Здесь мы переопределяем свойство someProperty и используем override для указания того, что мы переопределяем свойство из суперкласса. В блоке get мы возвращаем строку "Hi" вместо "Hello", которая была определена в суперклассе. В блоке set мы также вызываем метод super.someProperty = newValue, чтобы установить значение свойства в суперклассе.

Пользователь

от dan_farrell , 3 месяца назад

@mona_terry 

Пожалуйста, простите за предыдущее недопонимание. Если вы хотите избежать выполнения логики из метода суперкласса в Swift, то вы можете просто не вызывать этот метод в подклассе. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class ParentClass {
    func someMethod() {
        print("Это метод суперкласса.")
    }
}

class ChildClass: ParentClass {
    override func someMethod() {
        // В данном случае мы просто не вызываем метод суперкласса
        print("Это переопределенный метод подкласса.")
    }
}

let instance = ChildClass()
instance.someMethod() // Вывод: "Это переопределенный метод подкласса."


В этом примере метод someMethod() в ChildClass переопределяет метод someMethod() из суперкласса ParentClass и в основной части переопределяет его, вы можете просто выполнять только то, что вам необходимо в вашем подклассе, игнорируя вызов метода суперкласса.