Skip to content

Latest commit

 

History

History
51 lines (38 loc) · 1.68 KB

Open class.md

File metadata and controls

51 lines (38 loc) · 1.68 KB

Open class

Статус Ожидание Реальность
Можно наследоваться от open-класса / есть доступ к protected-полям / можно переопределять open-методы Можно переопределять и final-методы

Пояснения

Опишем open class на Kotlin:

open class OpenClassWithConstructorParams(
    val param1: String,
    val param2: Boolean
) {

    protected val someField: String get() = "14"

    fun finalMethodInClass() {
        println("Final method in open class")
    }

    open fun methodCanBeOverride() {
        println("OpenClassWithConstructorParams | methodCanBeOverride")
    }

}

На стороне Swift-а мы можем наследоваться от этого класса, использовать его protected-свойства, переопределять open и даже переопределять final-методы:

class OpenSwiftClass : OpenClassWithConstructorParams {
    override func methodCanBeOverride() {
        print("methodCanBeOverride in SwiftOpen2")
    }
    
    override func finalMethodInClass() {
        print("I can override final method")
    }
}

func example() {
    let osc = OpenSwiftClass(param1: "123", param2: true)
    let _ = osc.someField
}

Оглавление