Sobes.tech
Junior

Qual è la differenza tra open e public?

sobes.tech AI

Risposta dell'AI

open consente di ereditare e sovrascrivere membri in qualsiasi modulo, mentre public consente di utilizzare membri in qualsiasi modulo, ma l'eredità e la sovrascrittura sono consentite solo all'interno dello stesso modulo in cui il membro è dichiarato.

Caratteristica open public
Accesso Qualsiasi modulo Qualsiasi modulo
Ereditarietà Qualsiasi modulo Solo nel proprio modulo
Sovrascrittura Qualsiasi modulo Solo nel proprio modulo

Esempio:

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

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

// Modulo B
import ModuleA

class SubclassOfOpen: OpenClass {
    override func openMethod() {
        // Possibile in Modulo B
    }

    // Errore: publicMethod è consentito usare, ma non sovrascrivere fuori da Module A
    // override func publicMethod() { }
}

// Errore: PublicClass non consente ereditarietà fuori da Module A
// class SubclassOfPublic: PublicClass { }