KWiOS
KWiOS0101
KWiOS
  • 분류 전체보기 (108)
    • Algorithm (41)
      • 이코테 (14)
      • 이코테 문제풀이 (21)
      • 프로그래머스 (6)
    • CS (1)
      • 모두를 위한 컴퓨터 과학(CS50 2019) (0)
    • iOS (15)
    • Swift (36)
      • Swift문법 (32)
      • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 6

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
KWiOS

KWiOS0101

Swift/Swift문법

Swift문법 - Method

2023. 4. 16. 18:59

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
    'Swift/Swift문법' 카테고리의 다른 글
    • Swift문법 - Memberwise Initialer
    • Swift문법 - Inheritance
    • Swift문법 - self & super
    • Swift문법 - Subscript
    KWiOS
    KWiOS

    티스토리툴바