Sobes.tech
Junior

Класът open е финален или не?

sobes.tech AI

Отговор от AI

Не финално. Ключовата дума open ясно показва, че можете да наследите този клас и да препишете неговите членове.

open class BaseClass {
    open func someMethod() {
        // Стандартна реализация
    }
}

class DerivedClass: BaseClass {
    override open func someMethod() {
        // Преодоляна реализация
    }
}

Сравнение с други модификатори за достъп:

Модификатор Наследяване Преписване на членове
private Не (в рамките на файла/обхвата) Не
fileprivate Не (в рамките на файла) Не
internal Да (в рамките на модула) Да (в рамките на модула)
public Да (в рамките на модула) Да (в рамките на модула)
open Да (във всеки модул) Да (във всеки модул)
final Не Не

Клас или член, маркиран като final, не може да бъде преписан или наследен, което го прави финален. open прави обратното.