基于类内部属性
private:只能用于本类,或extension里面,超出范围报错。
fileprivate:用于本类,extension,继承子类(与父类位于同一个源文件中)中
public: 用于本类,extension,继承子类(可以不与父类位于一个源文件)中,继承子类中extension中
open:用于本类,extension,继承子类(可以不与父类位于一个源文件)中,继承子类中extension中
import UIKit
class tempA: NSObject {
open var A : Int = 0
public var D : Int = 0
fileprivate var B : Int = 0
private var C : Int = 0
func tempAA() {
}
}
extension tempA {
func aaaa() {
A = 1
B = 2
C = 3
D = 4
}
}
class tempC: tempA {
func temC() {
A = 1
B = 2
D = 3
}
}
class tempD: NSObject {
func tempDD() {
// A = 1
// B = 2
// D = 3
}
}
import UIKit
class tempB: tempA {
func tempBB() {
A = 1
D = 2
}
}
extension tempB {
func tempBB2() {
A = 1
D = 1
}
}
class tempE: tempB {
func tempB() {
A = 0
D = 0
}
}
基于类外部定义变量
不能创建open修饰的变量(会提示Only classes and overridable class members can be declared 'open'; use 'public'),只有类和可覆盖的类成员可以声明为‘open’请使用‘public’
fileprivate 跟private 作用范围一样
public 完成开放,全局变量

internal 系统默认的修饰词
作用范围 open > public > internal > fileprivate > private
网友评论