Sobes.tech
Junior

Wat is het verschil tussen open en public?

sobes.tech AI

Antwoord van AI

open staat toe dat leden geërfd en overschreven kunnen worden in elke module, terwijl public het gebruik van leden in elke module toestaat, maar overerving en overschrijving alleen binnen dezelfde module waar het lid is gedeclareerd, toegestaan zijn.

Kenmerk open public
Toegang Elke module Elke module
Overerving Elke module Alleen in eigen module
Overschrijving Elke module Alleen in eigen module

Voorbeeld:

// Module A
open class OpenClass {
    open func openMethod() { }
    public func publicMethod() { }
}

public class PublicClass {
    public func publicMethod() { }
}

// Module B
import ModuleA

class SubclassOfOpen: OpenClass {
    override func openMethod() {
        // Mogelijk in Module B
    }

    // Fout: publicMethod is toegestaan te gebruiken, maar niet te overschrijven buiten Module A
    // override func publicMethod() { }
}

// Fout: PublicClass staat geen overerving buiten Module A toe
// class SubclassOfPublic: PublicClass { }