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