목차


Chapter 9. 구조체와 클래스


구조체와 클래스는 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가질 수 있다. 하나의 새로운 사용자 정의 데이터 타입을 만들어주는 것이다.

구조체의 인스턴스는 값 타입이고, 클래스의 인스턴스는 참조 타입이다.

스위프트에서는 하나의 소스파일에 여러 개의 구조체와 여러 개의 클래스를 정의하고 구현할 수 있다. 중첩 타입의 정의 및 선언 또한 가능하다.

구조체

struct 키워드로 정의한다. 구조체 이름은 대문자 카멜케이스를 사용하여 명명한다. 프로퍼티와 메서드는 소문자 카멜케이스를 사용하여 명명한다.

struct 구조체_이름 {
		프로퍼티와 메서드들
}

인스턴스를 생성하고 초기화하고자 할 때는 기본적으로 생성되는 멤버와이즈 이니셜라이저를 사용한다. 구조체에 기본 생성된 이니셜라이저의 매개변수는 프로퍼티 이름으로 자동 지정된다. 기본 제공되는 멤버와이즈 이니셜라이저 외에 사용자 정의 이니셜라이저도 구현 가능하다.

프로퍼티 값에 접근하고 싶다면 마침표(.)를 사용하면 된다. 구조체를 let으로 선언하면 인스턴스 내부의 프로퍼티 값을 변경할 수 없고, var로 선언하면 프로퍼티가 var로 선언된 경우에 값을 변경할 수 있다.

클래스

스위프트의 클래스는 부모클래스가 없어도 상속 없이 단독으로 정의가 가능하다. 클래스를 정의한다는 것은 새로운 타입을 생성해주는 것과 마찬가지므로 대문자 카멜케이스를 사용하여 명명한다. 프로퍼티와 메서드는 소문자 카멜케이스를 사용하여 명명한다.