// Type 생성
struct User {
// property 선언
let name: String
}
// instance 생성
let eunji = User(name: "Eunji")
struct User {
let name: String // Property
// instance Method
func greet() -> String { Method
"Hello \(name)!"
}
}
// ERROR
User.greet()
설계도(Class, Struct ,Type) <-> 실체/물건(object, instance)
let eunji = User(name: "Eunji Choi")
eunji.greet()
// 생성
struct User {
let name: String
static func sayHello() {
print("Hello")
}
class func sayBye() {
print("Bye")
}
}
// 호출
User.sayHello()
User.sayBye()
class User {
static func sayHello() {
print("Hello")
}
class func sayBye() {
print("Bye")
}
}
// static override -> ERROR
class staticUser: User {
override static func sayHello() // ERROR
}
// class override -> OK
class ClassUser: User {
override class func sayBye() {
print("ByeBye")
}
}
class User {
let name = "eunji"
static let alias = "alice"
static func sayHello() {
print(name) // ERROR
print(alias) // OK
}
}
인스턴스가 생성되어야만 저장 공간을 갖는 인스턴스 멤버(property, method)에 접근 불가능!
class User {
let name = "eunji"
static let alias = "alice"
func sayhello() {
print(name) // OK
print(alias) // OK
}
}
Instance Method: instance가 생성되어야만 접근 가능.
따라서, Instance Member에 접근 가능.
(Instance가 생성된 상태이므로, member도 모두 메모리에 올라갔을 것이므로)
Instance 생성 여부와 상관없이 Type만 알면 접근 가능한
Type Member에도 당연히 접근 가능!
instance Method: instance가 생성되어야만 메모리 할당 받음.
-> instance Member, type Member 모두 접근 가능.
.
type Method
-> type Member 접근 가능.
-> instance Member 접근 불가능.
(instance가 생성되어야만 접근 가능하므로)
https://yeongwoo-cho.tistory.com/133
https://babbab2.tistory.com/122
https://www.youtube.com/watch?v=mV3wZ0tM_bk