[swift] 클래스와 구조체 선언

Swift에서는 클래스와 구조체를 선언하여 객체를 생성할 수 있습니다. 클래스와 구조체는 모두 속성과 메서드를 가지고 있으며, 언어적으로는 많은 차이가 있지만 기본적인 선언 방법은 비슷합니다.

클래스 선언

클래스는 class 키워드를 사용하여 선언할 수 있습니다. 아래는 클래스를 선언하는 예시입니다.

class Person {
    var name: String
    var age: Int

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

    func speak() {
        print("안녕하세요!")
    }
}

위의 예제에서는 Person 클래스를 선언하고, nameage라는 속성을 가지고 있습니다. 그리고 init 메서드를 통해 객체를 초기화하고, speak 메서드를 통해 인사를 출력합니다.

구조체 선언

구조체는 struct 키워드를 사용하여 선언할 수 있습니다. 클래스와 마찬가지로 속성과 메서드를 가질 수 있습니다. 아래는 구조체를 선언하는 예시입니다.

struct Point {
    var x: Int
    var y: Int

    init(x: Int, y: Int) {
        self.x = x
        self.y = y
    }

    mutating func moveBy(x: Int, y: Int) {
        self.x += x
        self.y += y
    }
}

위의 예제에서는 Point 구조체를 선언하고, xy라는 속성을 가지고 있습니다. init 메서드를 통해 초기화하고, moveBy 메서드를 통해 좌표를 이동시킬 수 있습니다.

클래스와 구조체의 차이점

클래스와 구조체는 언어적으로 많은 차이가 있지만, 가장 큰 차이점은 참조 타입값 타입입니다. 클래스는 참조 타입으로, 인스턴스를 생성하고 할당하면 실제로는 메모리에서 같은 인스턴스를 참조하게 됩니다. 반면에 구조체는 값 타입으로, 인스턴스를 생성하고 할당하면 별도의 인스턴스가 생성되어 값이 복사됩니다. 이러한 차이점으로 인해 클래스는 상속, 타입 변환, 소멸자 등의 기능을 지원하며, 구조체는 상속이 불가능하고 간단한 데이터 모델링에 주로 사용됩니다.

마무리

Swift에서는 클래스와 구조체를 통해 객체를 생성할 수 있습니다. 클래스와 구조체는 기능과 사용법에서 차이가 있으며, 개발자의 필요에 따라 적절히 선택하여 사용할 수 있습니다.