//
// ViewController.swift
// 通路控制關鍵詞
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let a = A()
a.openMethod()
// 等級排序如下:
// open > public > interal > fileprivate > private
}
}
class A {
// 1.可以被任何人使用
// 2.也可以被override和繼承,這是和public的差別
open func openMethod(){
print("openMethod")
}
// 1.使用public修飾的類,屬性或方法,可以被任何類通路,
// 2.但在module外不可以被override和繼承,而在module内可以;
// 3.需要import的就是module外,隻能通路引入子產品中public修飾的屬性或者方法而不可以繼承。
// 4.❤️一個App就是一個子產品,一個第三方API, 第三等方架構等都是一個完整的子產品,這些子產品如果要對外留有通路的屬性或者方法,就應該使用public的通路權限。
public func publicMethod(){
print("publicMethod")
}
// internal: internal通路權限的屬性和方法說明在子產品内部可以通路,超出子產品内部就不可被通路了。
// 在Swift中預設就是internal的通路權限
internal func internalMethod(){
print("internalMethod")
}
// fileprivate來顯式的表明,這個元素的通路權限為檔案内私有。
fileprivate func filePrivateMethod(){
print("filePrivateMethod")
}
// private則是真正的私有,離開了這個類或者結構體的作用域外面就無法通路
private func PrivateMethod(){
print("PrivateMethod")
}
}