메모리에 올리지 않아도 바로 호출할 수 있는 함수를 의미한다
인스턴스를 생성하지 않고도 클래스에 바로 접근해서 메소드 호출이 가능
일반적인 class의 메소드들은 myFriend처럼 인스턴스를 생성한 후에 class의 메소드를 .을 이용해서 사용할 수 있다
하지만 class func은 굳이 인스턴스를 생성하지 않고도 클래스에 바로 접근해서 메소드 호출이 가능하다!!
class Friend {
func sayHi() {
print("hi")
}
class func sayBye() {
print("bye")
}
}
//일반적인 형태는 인스턴스를 생성해야 해당 메소드 호출이 가능하다
let myFriend = Friend()
myFriend.sayHi()
//인스턴스를 생성하지 않아도 클래스에 바로 접근해서 메소드 호출이 가능하다
Friend.sayBye()
class안에서 func을 만들어줄 때 static이라고 적으면 된다
class func과 동일하게 인스턴스를 생성하지 않고도 메소드에 바로 접근해서 호출이 가능하다
class Friend {
func sayHi() {
print("hi")
}
static func sayHoHo() {
print("hoho")
}
}
//일반적인 형태는 인스턴스를 생성해야 해당 메소드 호출이 가능하다
let myFriend = Friend()
myFriend.sayHi()
//인스턴스를 생성하지 않아도 클래스에 바로 접근해서 메소드 호출이 가능하다
Friend.sayHoHo()
static func은 final class func과 동일하다 → 즉, static func은 override가 되지 않는다
그럼 여기서 final의 의미는 뭘까?
override가 가능하다 즉, 상속이 가능하다
class Friend {
func sayHi() {
print("hi")
}
class func sayBye() {
print("bye")
}
static func sayHoHo() {
print("hoho")
}
}
class BestFriend : Friend {
class override func sayBye() {
super.sayBye() //부모의 sayBye를 호출
print("덮어썻음 say bye")
//static이라서 override가 안됨
func sayHoHo() {
print("덮어썼음 hoho")
}
}
//일반적인 형태는 인스턴스를 생성해야 해당 메소드 호출이 가능하다
let myFriend = Friend()
myFriend.sayHi()
//인스턴스를 생성하지 않아도 클래스에 바로 접근해서 메소드 호출이 가능하다
Friend.sayHoHo()
//일반적인 형태는 인스턴스를 생성해야 해당 메소드 호출이 가능하다
let myFriend = Friend()
myFriend.sayHi()
//인스턴스를 생성하지 않아도 클래스에 바로 접근해서 메소드 호출이 가능하다
Friend.sayHoHo()
BestFriend.sayBye()
//overrider가 안됨
//BestFriend.sayHoHo()
What is the difference between static func and class func in Swift?