본문 바로가기
공부/스위프트

[스위프트] final 메서드와 static 메서드

by 초코팅촉 2024. 1. 4.
728x90

이전에 타입 메서드와 인스턴스 메서드의 비교를 해봤다.

2024.01.03 - [공부/스위프트] - [스위프트] 인스턴스 메서드와 타입 메서드

근데 타입 메서드에 대해서 생각하다 보면 이런 생각이 든다.

 

"final class func와 static func와 똑같이 작동하지 않나?"

 

실제로 그렇다. 똑같이 작동한다. 적어도 내가 해봤던 테스트상으로는 그랬다.

 

하지만 실제로는 다른경우에 쓴다.

근데 막 찾아봐도 정확히 어떨 때 쓴다는 말이 명확한 느낌으로 없다.

내가 내린 결론은 단어에서 주는 뉘앙스 차이로 인해서 그렇다고 본다.

 

final

먼저 final 메서드는 타입 메서드로 쓸 때 "final 메서드명" 이런식으로 쓴다.

이는 앞에서 static 타입 메서드 얘기할 때 말했듯이 오버라이딩이 안 된다.

메서드 오버라이딩 안되게 할 때 final을 붙인다.

딱 봐도 final 보면 뭔가 최종.pptx 같은 느낌이라 이걸로 기억하면 좋을 것 같다.

 

추가로 final 키워드는 클래스 자체나 클래스 멤버에서만 쓸 수있다.

 

static

static 메서드는 타입 메서드로 앞서 말했듯 진짜 순수하게 타입메서드로 쓸 때 쓴다.

쓰는것도 그냥 "static 메서드명" 이렇게 쓴다.

그냥 진짜로.

별거 없이.

그냥 여기저기서 바로 갖다 끌어다 쓸 요량으로 타입메서드로 선언할 때 쓴다.

 

추가로 static 키워드는 타입이라면 다 쓸 수 있다.

 

한가지 마지막으로 첨언을 하자면 위의 내용들은 결국 final과 static 키워드의 차이점으로 보고 이해하면 쉽다.

두 키워드가 꼭 메서드에만 붙일 수 있는 키워드가 아니라서 그냥 프로퍼티에 붙여도 되고 메서드에 붙여도 되고 그렇다.