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 مجاز است برای استفاده، اما برای بازنویسی خارج از ماژول A نیست
    // override func publicMethod() { }
}

// خطا: PublicClass اجازه ارث‌بری خارج از ماژول A را نمی‌دهد
// class SubclassOfPublic: PublicClass { }