Sobes.tech
Junior — Middle

What is the difference between public and open access modifiers in Swift?

sobes.tech AI

Answer from AI

In Swift, access modifiers public and open both allow using a class or method outside the module, but there is an important difference:

  • public allows using the class or method outside the module, but does not permit inheritance or overriding outside the module.
  • open allows not only usage but also inheritance of classes and overriding methods outside the module.

That is, if you want your class to be extendable and overridable in other modules, use open. If you only want to provide access to the class or method without the possibility of inheritance, use public.

Example:

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

open class OpenClass {
    open func method() {}
}

// In another module:
// class SubClass: PublicClass {} // Error: cannot inherit
// class SubClass: OpenClass {} // Allowed
What is the difference between public and open access… - sobes.tech