Swift基础知识之访问控制

2021-05-23  本文已影响0人  alfei13

一、访问控制(Access Control)

二、访问级别的使用准则

private class Car {
    var name: String?
    func testP() {
    }
}
//Variable must be declared private or fileprivate because its type uses a private type
var c: Car?
// 相当于别定义的c的访问权限不大于Car的访问权限

三、元组、泛型类型

fileprivate class Car {
}

internal class Dog {
    
}
// 这里会报错
internal var data1 : (Dog, Car)
// 这里的访问级别是fileprivate、

四、成员、嵌套类型

public class Car {
    public var p1 = 0 // public
    var p2 = 0  // internal
}
internal class Dog {
    var name: String?  // internal
    private func f1() {} // private
}

五、成员的重写

public class Person {
    fileprivate var p1 = 0
}

class Student : Person {
    override var p1: Int { // internal
        set {}
        get { 10 }
    }
}
public class Person {
    private var p1 = 0
    
    class Student : Person {
        override var p1: Int { // internal
            set {}
            get { 10 }
        }
    }
}

六、getter、setter方法默认自动接收他们所属环境的访问级别

// 这句话是说set的权限是fileprivate、getter的权限是public
fileprivate(set) public var num = 10 

七、初始化器

八、枚举类型的case

public enum Shape {
    case circle, triangle, square // public
}

九、协议

public protocol Run { func ru() }

public class Car : Run {
// 这里会报错、因为默认的访问级别是internal、而协议的是public
    func ru() {
        
    }
}

十、扩展

public class Person {
    private func run() {}
    private func eat() {}
}

extension Person {
    private func run1 {}
    private func eat1() {
        eat()
    }
}

至此、swift访问控制基本说完,如有不当之处、还请各位大佬批评指正,不胜感激!

上一篇 下一篇

猜你喜欢

热点阅读