클래스
정의 문법
클래스는 참조 타입입니다. 타입이름은 대문자 카멜케이스를 사용하여 정의합니다.
class 이름 { /* 구현부 */ }
프로퍼티 및 메서드 구현
클래스의 타입 메서드는 두 종류가 있습니다. 상속 후 재정의가 가능한 class 타입메서드, 상속 후 재정의가 불가능한 static 타입메서드가 있습니다. 자세한 내용은 상속 부분에서 다시 다룹니다.
class Sample { // 가변 프로퍼티 var mutableProperty: Int = 100 // 불변 프로퍼티 let immutableProperty: Int = 100 // 타입 프로퍼티 static var typeProperty: Int = 100 // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 // 재정의 불가 타입 메서드 - static static func typeMethod() { print("type method - static") } // 재정의 가능 타입 메서드 - class class func classMethod() { print("type method - class") } }
클래스 사용
// 인스턴스 생성 - 참조정보 수정 가능 var mutableReference: Sample = Sample() mutableReference.mutableProperty = 200 // 불변 프로퍼티는 인스턴스 생성 후 수정할 수 없습니다 // 컴파일 오류 발생 //mutableReference.immutableProperty = 200 // 인스턴스 생성 - 참조정보 수정 불가 let immutableReference: Sample = Sample() // 클래스의 인스턴스는 참조 타입이므로 let으로 선언되었더라도 인스턴스 프로퍼티의 값 변경이 가능합니다 immutableReference.mutableProperty = 200 // 다만 참조정보를 변경할 수는 없습니다 // 컴파일 오류 발생 //immutableReference = mutableReference // 참조 타입이라도 불변 인스턴스는 // 인스턴스 생성 후에 수정할 수 없습니다 // 컴파일 오류 발생 //immutableReference.immutableProperty = 200 // 타입 프로퍼티 및 메서드 Sample.typeProperty = 300 Sample.typeMethod() // type method // 인스턴스에서는 타입 프로퍼티나 타입 메서드를 // 사용할 수 없습니다 // 컴파일 오류 발생 //mutableReference.typeProperty = 400 //mutableReference.typeMethod()
학생 클래스 만들어보기
class Student { // 가변 프로퍼티 var name: String = "unknown" // 키워드도 `로 묶어주면 이름으로 사용할 수 있습니다 var `class`: String = "Swift" // 타입 메서드 class func selfIntroduce() { print("학생타입입니다") } // 인스턴스 메서드 // self는 인스턴스 자신을 지칭하며, 몇몇 경우를 제외하고 사용은 선택사항입니다 func selfIntroduce() { print("저는 \(self.class)반 \(name)입니다") } } // 타입 메서드 사용 Student.selfIntroduce() // 학생타입입니다 // 인스턴스 생성 var yagom: Student = Student() yagom.name = "yagom" yagom.class = "스위프트" yagom.selfIntroduce() // 저는 스위프트반 yagom입니다 // 인스턴스 생성 let jina: Student = Student() jina.name = "jina" jina.selfIntroduce() // 저는 Swift반 jina입니다
관련문서
The Swift Programming Language - Classes and Structures
by yagom
facebook : http://www.facebook.com/yagomSoft
facebook group : https://www.facebook.com/groups/yagom/
p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.
RSS Feed 받기
↓↓↓ 블로거에게 공감은 큰 힘이 됩니다 ↓↓↓
'Swift > 기본문법' 카테고리의 다른 글
클래스, 구조체, 열거형 비교 (0) | 2017.06.19 |
---|---|
열거형 - Enumerations (0) | 2017.06.15 |
구조체 (2) | 2017.06.08 |
옵셔널 (0) | 2017.06.05 |
반복문 (0) | 2017.06.01 |