본문 바로가기
Swift 기초 문법 👊

[Swift_문법] Methods에 대해 한번 알아보는 윤기사_8

by 개발하는윤기사 2022. 5. 31.
728x90
반응형

이웃님들 안녕하세요~ 개발하는 윤기사입니다! 

 

어제는 비가 조금 왔다가 그치면서 쌀쌀해 지는 것 같더니~~ 오늘은 또 찜통더위네요!!

그래도 다들 코딩 공부 열심히 하고 계시죠? 저도 열심히 하고 있답니다! 우리 이웃님들도 잘 따라오시길 바라요 ㅎㅎ

 

오늘 알려드릴 것은 Methods(메소드) 입니다! 

 

특정 타입의 Class, Struct, Enum과 관련된 함수를 메소드라 합니다!

 

특정 타입의 인스턴스에서 실행할 수 있는 메소드를 인스턴스 메소드(Instance Methods)

 

특정 형과 관련된 메소드를 타입 메소드(Type Methods)라 합니다.

 

인스턴스 메소드 먼저 알아보도록 할까요~?

 

 

 

- 인스턴스 메소드 -

 

인스턴스 메소드는 이름 그대로 그 인스턴스가 속한 특정 타입의 인스턴스에서만 실행 가능합니다!

 

Counter 클래스를 선언하고 인스턴스 메소드로 각각 증가() , 증가(by 추가: Int) , 초기화() 를 정의해 인스턴스 내의 count property를 변경

 

위에서 증가() 메소드에서는 count += 1 이라 표현했지만 사실은 self.count += 1 의 의미를 갖는다!

 

모든 프로퍼티는 암시적으로 인스턴스 자체를 의미하는 self라는 프로퍼티를 갖습니다!
 
인스턴스 메소드 안에서 self프로퍼티를 이용해 인스턴스 자체를 참조하는데 사용할 수 있습니다!

이것이 가능한 이유는 Swift에서 특정 메소드에서 해당 인스턴스에 등록된 메소드나 프로퍼티를 호출하면 현재 인스턴스의 메소드나 프로퍼티를 사용하는 것으로 자동으로 가정하기 때문입니다.

 

하지만 예외적인 상황이 있습니다. 바로 인자 이름이 프로퍼티 이름과 같은 경우입니다.

 

이 경우에는 프로퍼티에 접근하기 위해 명시적으로 self키워드를 사용해야 합니다.

 

 

- 타입 메소드 -

 

인스턴스 메소드는 특정 타입의 인스턴스에서 호출되고, 타입 메소드는 특정 타입 자체에서 호출해 사용합니다.

 

타입 메소드의 선언은 메소드 키워드 func앞에 static이나 class키워드를 추가하면 됩니다!

 

static메소드와 class메소드의 차이점은

  1) static메소드는 서브클래스에서 오버라이드 할 수 없는 타입 메소드(Override(X))

  2) class메소드는 서브클래스에서 오버라이드 할 수 있는 타입 메소드(Override(O))

 

Override에 관한 건 다음 게시글 "상속"편에서 자세히 다루도록 하겠습니다~

 

인스턴스 메소드와 타입 메소드의 차이!

 

 

자 이웃님들, 인스턴스 메소드와 타입 메소드에 대해서 아시겠나요?

 

오늘 포스팅은 여기서 마치도록 하겠습니다~ 다음 게시글에서는 더욱 알찬 내용 가지고 오도록 하겠습니다 ㅎㅎ

 

개발하는 윤기사는 오늘도 열심히 코딩 공부하겠습니다~ 화이팅❤️

 

 

728x90
반응형