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 { }