클래스, 구조체, 열거형에서 사용된다. 저장 타입 프로퍼티와 연산 타입 프로퍼티가 존재하며, 저장 타입 프로퍼티의 경우 선언할 당시 원하는 값으로 항상 초기화가 되어 있어야 한다. static을 이용해 선언하며, 자동으로 lazy로 작동한다(lazy를 직접 붙일 필요 또한 없다)
class Human{
let name: String = "abc" //저장 프로퍼티
var alias: String{ //연산 프로퍼티
return name + "def"
}
}
class Human{
static let name: String = "abc" //저장 타입 프로퍼티
static var alias: String{ //연산 타입 프로퍼티
return name + "def"
}
}
let people: Human = .init()
people.name // 에러
Human.name
연산 타입 프로퍼티는 서브클래스에서 오버라이딩이 가능
오버라이딩이 가능한 연산 타입 프로퍼티의 경우 static대신 class를 붙인다
(static은 오버라이딩이 불가능한 연산 타입 프로퍼티)
class Human {
class var alias: String {
return "Human Type Property"
}
}
class People: Human {
override class var alias: String {
return "People Type Property"
}
}
Human.alias // "Human Type Property"
People.alias
참고
개발자 소들이