HIT해

[Swift 기초문법 - 30] class func vs static func 본문

Swift/Swift 기초문법

[Swift 기초문법 - 30] class func vs static func

힛해 2024. 8. 14. 06:15
728x90

사용예시

class Friend{
	// 1.
	func sayHi(){
    	print("안녕!")
        }
        
    // 2.
    class func sayBye(){
    	print("바이바이")
    }
    
    // 3.
    static func sayHoho(){
    	print("호호")
    }
}

// 1.
// 호출하려면 인스턴스를 만들어야한다
// 클래스를 메모리에 올려서 객체 인스턴스를 만들어야한다.
let myFriend = Friend()
myFriend.sayHi()

// 2.
// 메모리에 올리지 않아도 바로 호출할 수 있는 메소드
// 오버라이드가 가능하다.
Friend.sayBye()

// 3.
// class func과 같이 클래스명.함수명으로 호출이 가능하다.
// static func is smae as final class func
// 오버라이드가 되지 않는다

class BestFriend : Friend {

	// 덮어씌워지지 않음
	class ovveride func sayBye(){
    	print("덮어썻음 세이 바이바이")
        }
        
    // 덮어씌워지지 않음
  	func sayhhoho(){
    	print("덮어썼음 세이 호호")
        }
}

 

프로젝트 사용 예시

보통 Utils 같은 곳에서 사용한다

class Utils {
	static func sayHello() -> String {
    	return "안녕하세요"
        }
    
    class func sayBye() -> String{
    	return "잘가요"
        }
}

 

이런 헬퍼 메소드들을 사용할때마다 인스턴스를 생성할 수는 없기에 static이나 class func으로 선언해서 사용한다

(실제로 나도 프로젝트에 이렇게 적용해서 사용하고 있다..!)

 

정리하자면

class func과 static func은 인스턴스를 생성하지 않고도 함수를 실행시키게 하고

오버라이드 가능 유무에 따라 class static func으로 나뉜다