[swift] Swift 클래스 초기화 메서드와 상위 클래스 프로퍼티

Swift에서 클래스를 사용하는 과정에서 초기화 메서드와 상위 클래스 프로퍼티는 중요한 개념입니다. 초기화 메서드는 객체가 생성될 때 실행되는 메서드이며, 상위 클래스 프로퍼티는 클래스가 다른 클래스를 상속할 때 사용되는 프로퍼티입니다. 이 블로그 글에서는 Swift에서 클래스 초기화 메서드와 상위 클래스 프로퍼티를 자세히 알아보겠습니다.

클래스 초기화 메서드

클래스 초기화 메서드는 객체를 생성할 때 호출되는 메서드입니다. Swift에서는 다음과 같이 init 키워드를 사용하여 초기화 메서드를 구현할 수 있습니다.

class MyClass {
    var myProperty: Int
    
    init() {
        myProperty = 0
    }
}

let myObject = MyClass()
print(myObject.myProperty) // 0

위의 예제에서는 MyClass라는 클래스를 정의하고, myProperty라는 프로퍼티를 선언했습니다. 그리고 init 메서드를 사용하여 myProperty를 0으로 초기화했습니다. 객체를 생성할 때 init 메서드가 호출되어 myProperty가 초기화되는 것을 확인할 수 있습니다.

초기화 메서드는 매개변수를 가질 수도 있으며, 필요에 따라 자유롭게 구현할 수 있습니다. 예를 들어, 다음과 같이 매개변수를 받는 초기화 메서드를 구현할 수 있습니다.

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

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

위의 예제에서는 Person이라는 클래스를 정의하고, nameage라는 프로퍼티를 선언했습니다. 그리고 init 메서드를 사용하여 nameage를 초기화했습니다. 객체를 생성할 때 nameage 매개변수를 전달하여 초기화하는 것을 확인할 수 있습니다.

상위 클래스 프로퍼티

Swift에서는 클래스가 다른 클래스를 상속할 수 있습니다. 상속을 사용하면 상속한 클래스의 프로퍼티를 사용할 수 있습니다. 예를 들어, 다음과 같이 상속을 통해 상위 클래스의 프로퍼티를 사용할 수 있습니다.

class Vehicle {
    var engine: String
    
    init(engine: String) {
        self.engine = engine
    }
}

class Car: Vehicle {
    var numOfWheels: Int
    
    init(engine: String, numOfWheels: Int) {
        self.numOfWheels = numOfWheels
        super.init(engine: engine)
    }
}

let myCar = Car(engine: "V6", numOfWheels: 4)
print(myCar.engine) // V6
print(myCar.numOfWheels) // 4

위의 예제에서는 Vehicle이라는 상위 클래스를 정의하고, engine이라는 프로퍼티를 선언했습니다. 그리고 Car라는 클래스를 정의하고, numOfWheels라는 프로퍼티를 선언했습니다. Car 클래스에서 init 메서드를 사용하여 enginenumOfWheels를 초기화할 수 있습니다. Car 클래스 내에서 super.init을 호출하여 engine을 초기화하는 것을 확인할 수 있습니다. 이렇게 상위 클래스의 프로퍼티를 사용하여 클래스를 정의하면 중복된 코드를 피할 수 있습니다.

결론

Swift에서 클래스 초기화 메서드와 상위 클래스 프로퍼티는 객체 지향 프로그래밍에서 중요한 개념입니다. 초기화 메서드를 사용하여 객체를 생성하고, 상위 클래스의 프로퍼티를 상속하여 중복을 피할 수 있습니다. 이러한 개념을 잘 이해하고 활용하면 코드의 가독성과 유지보수성을 높일 수 있습니다.

참고 자료: