Sobes.tech
Junior

Ի՞նչ է տարբերությունը open և public-ի միջև։

sobes.tech AI

Պատասխան AI-ից

open թույլ է տալիս ժառանգել և վերագրել անդամները ցանկացած մոդուլում, մինչդեռ public թույլ է տալիս օգտագործել անդամները ցանկացած մոդուլում, բայց ժառանգությունը և վերագրումը թույլատրվում են միայն նույն մոդուլում, որտեղ հայտարարած է անդամը:

Գծագիր open public
Հասանելիություն Ամեն մոդուլ Ամեն մոդուլ
Ժառանգություն Ամեն մոդուլ Միայն իր մոդուլում
Վերագրում Ամեն մոդուլ Միայն իր մոդուլում

Օրինակ:

// Մոդուլ A
open class OpenClass {
    open func openMethod() { }
    public func publicMethod() { }
}

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

// Մոդուլ B
import ModuleA

class SubclassOfOpen: OpenClass {
    override func openMethod() {
        // Հնարավոր է Մոդուլ B-ում
    }

    // Խախտում: publicMethod թույլատրված է օգտագործել, բայց ոչ վերագրել դուրս Module A
    // override func publicMethod() { }
}

// Խախտում: PublicClass չի թույլատրում ժառանգություն դուրս Module A
// class SubclassOfPublic: PublicClass { }