안녕하세요!
저번엔 프로퍼티(속성)에
대해서 배웠었는데요
프로퍼티에는
저장 / 계산 / 옵저버 / 타입
이 있는걸 배웠었죠?
이번엔 메서드(method)에
대해서 알아보고자 합니다
메서드
(Method)
클래스나 구조체 열거형과 같은 특정 객체 내에서
함수가 선언될 경우에 메서드라고
부릅니다
method에는
인스턴스 매서드와 타입메서드가 있습니다
우선 인스턴스 메서드부터 알아봅시다
인스턴스 메서드
인스턴스 메서드는 객체 타입 상태로는 호출이 가능하지 않고
반드시 인스턴스화 후에 호출할 수 있답니다
클래스 / 구조체 / 열거형 같은 각각 인스턴스에 속하는 함수랍니다
클래스 경우
다음으로 구조체에 대해서 알아봅시다
엇??!!
클래스랑 동일하게 사용이 가능할 줄 알았는데 안된다고 당황하지 마세요
mutating 키워드
를 사용하면 된답니다
인스턴스 메서드 마지막으로 열거형에서 사용하는 예시를
봅시다!
next() 메서드를 호출 할 때마다 상태변화되는걸 확인할 수 있습니다
여기서 잠깐
mutating 키워드 제거해도 되는거아냐?라고 하지만
mutating 키워드 없애는 순간 오류가 발생하게 됩니다
타입 메서드
타입 메서드는 객체 타입 상태에서 호출이 가능합니다
그래서 타입 메서드는 오브젝티브-C에서
클래스 메서드와 유사합니다
그리고 앞에서 배웠던 타입 프로퍼티와 유사하다고 생각하면 됩니다
인스턴스를 생성하지 않고도 클래스나 구조체 자체에서 읽을 수 있는 값이 타입 프로퍼티였다면
인스턴스를 생성하지 않고 클래스나 구조체 자체에서 호출할 수 있는 메서드가
타입 메서드 입니다
클래스, 구조체, 열거형 선언 앞에 static을 붙이면 되고
클래스 타입에서 선언된 연산 프로퍼티 중 일부에는
class keyword를 사용할 수 있습니다
class keyword는 클래스 타입에 정의된 메서드를 하위클래스에서
재정의 가능한 타입 메서드로 선언할 때 static 대신 class keyword 사용하여
해당 메서드가 재정의한 가능한 타입 메서드라는 것을 컴파일러에게 알려줄 수 있답니다
우선 클래스 타입 메서드에 대해서 알아봅시다
이렇게 class로 선언이 가능하지만 static으로도 선언이 가능합니다
여기서 약간의 차이점이 있답니다
class 키워드를 사용하게되면
상속할 때 재정의가 가능하지만
static으로 정의하게되면
재정의가 불가능하답니다
상속은 나중에 배울거기 때문에
나중에 한 번 더 정리하겠습니다 :)
읽어주셔서 감사합니다
❤️혹시 잘못된 정보가 있다면 꼭 댓글로 알려주시면 감사하겠습니다❤️
참고
앨런스위프트 문법 자료(강의)
꼼꼼한 재은씨의 스위프트 프로그래밍
'Swift' 카테고리의 다른 글
Swift | class(클래스)와 struct(구조체)에 관하여 - 초기화와 생성자 (0) | 2024.05.16 |
---|---|
Swift | class(클래스)와 struct(구조체)에 관하여 - 상속(inheritance)과 재정의(overriding vs overloading) (1) | 2024.05.16 |
Swift | class(클래스)와 struct(구조체)에 관하여 - 3 property ( 프로퍼티 옵저버 willSet, didSet / 타입프로퍼티) (0) | 2024.05.16 |
Swift | AnyObject / Any란? (0) | 2024.05.14 |
Swift | class(클래스)와 struct(구조체)에 관하여 - 2 property (저장 프로퍼티 / 계산 프로퍼티) (0) | 2024.05.14 |