IOS개발: SWIFT/4. 객체 지향 프로그래밍 심화

Swift 메서드: 인스턴스 메서드, 타입 메서드

_Blue_Sky_ 2024. 9. 12. 15:49
728x90
728x90

Swift 메서드: 인스턴스 메서드와 타입 메서드 심층 분석

Swift에서 메서드는 객체(인스턴스)의 행동을 정의하는 중요한 요소입니다. 메서드는 크게 인스턴스 메서드와 타입 메서드로 나눌 수 있으며, 각각의 특징과 사용법에 따라 적절하게 활용해야 합니다.

1. 인스턴스 메서드 (Instance Methods)

  • 정의: 특정 인스턴스에 속하며, 해당 인스턴스의 프로퍼티에 접근하거나 상태를 변경하는 메서드입니다.
  • 호출: 인스턴스를 생성한 후 점(.) 연산자를 사용하여 호출합니다.
  • 사용 예시:
class Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    func introduce() {
        print("안녕하세요  , 저는 \(name)이고 \(age)살입니다.")
    }
}

let person = Person(name: "홍길동", age: 30)
person.introduce() // 출력: 안녕하세요, 저는 홍길동이고 30살입니다.
 
  • 특징:
    • 인스턴스의 고유한 상태에 접근하여 다양한 작업을 수행할 수 있습니다.
    • self 키워드를 사용하여 현재 인스턴스를 참조할 수 있습니다.

2. 타입 메서드 (Type Methods)

  • 정의: 클래스, 구조체, 열거형 자체에 속하며, 인스턴스를 생성하지 않고도 호출할 수 있는 메서드입니다.
  • 호출: 타입 이름 뒤에 점(.) 연산자를 사용하여 호출합니다.
  • 종류:
    • static 메서드: 클래스 타입에만 사용 가능하며, 클래스 이름으로 직접 호출합니다.
    • class 메서드: 클래스와 서브클래스에서 모두 호출 가능하며, 서브클래스에서는 오버라이딩이 가능합니다.
  • 사용 예시:
class Math {
    static func add(_ a: Int, _ b: Int) -> Int {
        return a + b
    }
}

let result = Math.add(3, 5) // 결과: 8
 
  • 특징:
    • 인스턴스 생성 없이 타입 자체에서 사용되는 공통 기능을 구현합니다.
    • static 키워드 또는 class 키워드를 사용하여 선언합니다.
    • self 키워드 대신 타입 이름을 사용하여 타입 프로퍼티에 접근합니다.

인스턴스 메서드와 타입 메서드의 차이점 요약

구분인스턴스 메서드타입 메서드
호출 방식 인스턴스 생성 후 호출 타입 이름으로 직접 호출
접근 대상 인스턴스의 프로퍼티 및 메서드 타입 프로퍼티 및 메서드
self 키워드 사용 사용 타입 이름 사용
오버라이딩 가능 class 메서드만 가능
주요 용도 인스턴스의 상태 변경, 특정 인스턴스에 대한 연산 타입에 대한 공통 기능 제공, 생성자, 팩토리 메서드 등
 

언제 어떤 메서드를 사용해야 할까요?

  • 인스턴스 메서드:
    • 특정 인스턴스의 상태를 변경하거나, 인스턴스에만 해당하는 작업을 수행할 때 사용합니다.
    • 예: Person 클래스의 introduce() 메서드처럼 개별 사람의 정보를 출력하는 경우
  • 타입 메서드:
    • 인스턴스 없이 타입 자체에서 사용되는 공통 기능을 구현할 때 사용합니다.
    • 예: Math 클래스의 add() 메서드처럼 수학적인 계산을 수행하는 경우, 특정 타입의 인스턴스를 생성하는 팩토리 메서드 등

결론

Swift에서 메서드는 객체지향 프로그래밍에서 매우 중요한 역할을 합니다. 인스턴스 메서드와 타입 메서드의 차이점을 명확히 이해하고, 각 상황에 맞게 적절한 메서드를 사용하여 효율적인 코드를 작성할 수 있도록 노력해야 합니다.

728x90
728x90