Swift 关键字 -- 访问控制符

访问修饰符:在swift中,访问修饰符有五种,分别是:open、public 、internal、fileprivate、private

从高到低的排序:open > public >interal > fileprivate > private
open:可以被任何模块的代码访问,包括override(重写)和继承。
public: 可以被任何模块的代码访问,模块内是可以被override(重写)和继承的,而在但其他模块不可以override(重写)和继承。
internal:内部的意思。默认访问级别,可写可不写,访问级别所修饰的属性或方法在源代码所在的整个模块都可以访问。
fileprivate:修饰的属性或者方法只能在当前文件中访问,包括override(重写)和继承,当前类的extension 中也可以。如果一个文件中含有多个类,这些类中也可以。

类级别/文件级别/模块级别/全域访问/全域继承+重载


class Person  
{  
    fileprivate var jobTitle:String = ""  
}
extension Person  
{
    //当 extension 和 class 在同一个文件中时,允许访问
    func printJobTitle()  
    {  
        print("My job is \(jobTitle)")  
    }  
}

private:修饰的属性或者方法只能在当前类中访问,当前类的extension 中也可以访问。如果当前文件有多个类,这些类中不可以访问。

image

case

private

access.swift 

private class AccessPrivate {
    func demo() -> Void {
            
    }
}

error Class must be declared private or fileprivate because its superclass is private

access.swift 
class AccessPrivateImp: AccessPrivate {
    override func demo() {
        
    }
}

success

access.swift 
fileprivate/private class AccessPrivateImp: AccessPrivate {
    override func demo() {
        
    }
}

1. class 关键词修饰与 superclass 关键词修饰的级别有相关性, 当前类权限级别<=superclass权限级别
2. private 当前类的 extension 也是可以访问

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容