Method
- 메소드는 특정 타입과 연결된 함수
- 클래스,구조체,열거형에서 인스턴스 메소드와 타입 메소드를 정의 가능
- 인스턴스 메소드 - 클래스, 구조체 또는 열거형의 인스턴스에 속하는 함수
- 타입 메소드 - 타입 자체에서 호출되는 메소드를 정의
Instance Methods
- 인스턴스 메소드는 특정 클래스, 구조체, 열거형의 인스턴스에 속하는 함수
- 함수와 완전히 동일한 구문을 사용한다.
- 프로퍼티와 마찬가지로 인스턴스를 생성하고 인스턴스로 접근한다.
- 값형식인 구조체, 열거형에서 선언된 인스턴스 메소드에서는 프로퍼티를 변경할 수 없다.
- 하지만 mutating 키워드를 사용하면 인스턴스 메소드에서 프로퍼티 값을 변경할 수 있다.
struct Test {
var first: String = "1111"
var second: String = "2222"
mutating func instanceMethod() {
first = "3333"
second = "4444"
}
}
var test = Test()
test.first // "1111"
test.second // "2222"
test.instanceMethod()
test.first // "3333"
test.second // "4444"
mutating메소드는 암시적(implicit) self 프로퍼티에 완전히 새로운 인스턴스를 할당 할 수 있습니다.
위의 Point예제는 다음과 같은 방법으로 작성할 수 있습니다.
struct Test {
var x: Int = 1
var y: Int = 2
mutating func instanceMethod(first: Int,second: Int) {
self = Test(x: x + first, y: y + second)
}
}
var test = Test()
test.x // 1
test.y // 2
test.instanceMethod(first: 3, second: 5)
test.x // 4
test.y // 7
Type Methods
- 인스턴스를 할당하지 않고도 호출할 수 있는 메소드
- 타입 이름으로 접근 가능하다.
- 타입 메소드인지 나타내려면 static을 func 키워드 앞에 붙임
- func앞에 class가 붙으면 서브 클래스에서 메소드를 재정의 가능
- 자식 클래스에서 메소드를 재정의 하려면 override static 키워드를 사용
class FirstClass {
static func one() -> String {
return "첫번째 인스턴스 메소드"
}
class func two() -> String {
return "두번째 인스턴스 메소드"
}
}
class SecondClass: FirstClass {
override static func two() -> String {
return "오버라이드 완료"
}
}
FirstClass.one() // "첫번째 인스턴스 메소드"
SecondClass.two() // "오버라이드 완료"'Swift > Swift문법' 카테고리의 다른 글
| Swift문법 - Memberwise Initialer (0) | 2023.04.30 |
|---|---|
| Swift문법 - Inheritance (1) | 2023.04.23 |
| Swift문법 - self & super (0) | 2023.04.02 |
| Swift문법 - Subscript (0) | 2023.03.26 |
| Swift문법 - Properties (0) | 2023.03.19 |