[swift] Swift 초기화 메서드 vs. 인스턴스 메서드

Swift에서는 초기화(initialization) 메서드와 인스턴스(instance) 메서드가 서로 다른 용도와 역할을 가지고 있습니다. 초기화 메서드는 객체를 생성하고 초기화하는 데 사용되는 메서드로, 인스턴스 메서드는 객체에 대한 동작과 기능을 정의하는 메서드입니다. 이 두 가지 메서드의 차이점과 사용법에 대해서 알아보겠습니다.

초기화 메서드 (Initialization Methods)

초기화 메서드는 객체를 생성하고 멤버 변수를 초기화하는 데 사용됩니다. 이 메서드는 init 키워드를 사용하여 정의되며, 클래스 또는 구조체의 인스턴스 생성 시 자동으로 호출됩니다. 초기화 메서드는 객체 생성 시 필요한 매개 변수를 받을 수 있으며, 객체가 사용될 때 필요한 초기 상태를 설정하는 것이 목적입니다.

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

위의 예시에서 Person 클래스는 nameage라는 두 개의 멤버 변수를 가지고 있습니다. init 메서드를 사용하여 객체를 생성할 때, nameage를 매개 변수로 받아 초기화하게 됩니다.

인스턴스 메서드 (Instance Methods)

인스턴스 메서드는 객체의 동작과 기능을 정의하며, 객체가 생성되어 초기화된 후 사용될 때 호출됩니다. 인스턴스 메서드는 클래스나 구조체 내부에 정의되어 있으며, 해당 객체의 속성에 접근하거나 객체 내부에서 작동하는 기능을 구현합니다.

class Car {
    var brand: String
    var speed: Int
    
    init(brand: String, speed: Int) {
        self.brand = brand
        self.speed = speed
    }
    
    func accelerate() {
        self.speed += 10
    }
}

위의 예시에서 Car 클래스는 brandspeed라는 멤버 변수를 가지고 있습니다. accelerate라는 메서드는 속도를 10만큼 증가시키는 기능을 가지고 있으며, 해당 객체의 속성을 변경하는 역할을 합니다.

사용 예시

let person = Person(name: "John", age: 25)
print(person.name) // 출력: John

let car = Car(brand: "Tesla", speed: 100)
car.accelerate()
print(car.speed) // 출력: 110

위의 예시에서 Person 클래스로부터 person 객체를 생성하고 name 속성을 출력하면 “John”이라는 결과를 얻습니다. 또한 Car 클래스로부터 car 객체를 생성하고 accelerate 메서드를 호출한 후 speed 속성을 출력하면 110이라는 결과를 얻습니다.

이처럼 초기화 메서드는 객체를 생성하고 초기 상태를 설정하는 데 사용되며, 인스턴스 메서드는 객체의 동작과 기능을 구현하는 데 사용됩니다. 두 메서드를 적절히 활용하여 Swift에서 객체 지향 프로그래밍을 구현할 수 있습니다.

참고 문서: