1. 클래스
•클래스는 참조(reference) 타입
•타입이름은 대문자 카멜케이스를 사용하여 정의
•Swift의 클래스는 다중 상속이 되지 않음
2. 클래스 문법
•정의: "class" 키워드 사용
1 2 3 | class 이름 { /* */ } | cs |
•프로퍼티 및 메서드 구현
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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 func classMethod() { print("type method - class") } } | cs |
•클래스 사용
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | // 인스턴스 생성 - 참조정보 수정 가능 var mutableReference: Sample = Sample() mutableReference.mutableProperty = 200 // 불변 프로퍼티는 인스턴스 생성 후 수정할 수 없음 // 컴파일 오류 발생 // mutableReference.immutableProperty = 200 // 인스턴스 생성 - 참조정보 수정 불가 let immutableReference: Sample = Sample() // 클래스의 인스턴스는 참조 타입이므로 let으로 선언되었더라도 인스턴스 프로퍼티의 값 변경이 가능 immutableReference.mutableProperty = 200 // 다만 참조정보를 변경할 수는 없음 // 컴파일 오류 발생 // immutableReference = mutableReference // 참조 타입이라도 불변 인스턴스는 // 인스턴스 생성 후에 수정할 수 없음 // 컴파일 오류 발생 // immutaleReference.immutableProperty = 200 // 타입 프로퍼티 및 메서드 Sample.typeProperty = 300 Sample.typeMethod() // typeMethod // 인스턴스에서는 타입 프로퍼티나 타입 메서드를 // 사용할 수 없음 // 컴파일 오류 발생 // mutableReference.typeProperty = 400 // mutableReference.typeMethod() | cs |
3. 학생 클래스 만들어 보기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | class Student { // 가변 프로퍼티 var name: String = "unknown" // 키워드도 `로 묶어주면 이름으로 사용할 수 있음 var `class`: String = "Swift" // 타입 메서드 class func selfIntroduce() { print("학생 타입입니다.") } // 인스턴스 메서드 // self는 인스턴스 자신을 지칭하며, 몇몇 경우를 제외하고 사용은 선택사항 func selfIntroduce() { print("저는 \(self.class)반 \(name)입니다.") } } // 타입 메서드 사용 Student.selfIntroduce() // 학생 타입입니다. // 인스턴스 생성 var jinun: Student = Student() jinun.name = "Jinun" jinun.class = "스위프트" jinun.selfIntroduce() // 저는 스위프트반 Jinun입니다. // 인스턴스 생성 let jennie: Student = Student() jennie.name = "Jennie" jennie.selfIntroduce() // 저는 Swift반 Jennie입니다. | cs |
제 나름대로 생각을 정리하며 포스팅합니다.
정보전달에 있어 차질이 생기는 것을 우려해 나름대로 확실하게 검증을 하고 포스팅하려고 노력합니다.
본 포스팅에 잘못된 정보가 있거나 수정해야할 내용이 있다면 댓글 또는 아래의 이메일로 알려주시면 감사하겠습니다.
E-mail : silent_lhr@naver.com
공감은 로그인이 필요없습니다.
공감은 저에게 포스팅을 이어나갈 수 있는 힘이 됩니다.
'프로그래밍 [KOR] > Swift' 카테고리의 다른 글
Swift의 값/참조 타입 (0) | 2018.10.10 |
---|---|
Swift의 열거형 (0) | 2018.10.08 |
Swift의 구조체 (0) | 2018.10.08 |
Swift의 옵셔널 추출 (0) | 2018.10.05 |
Swift의 옵셔널 (1) | 2018.10.04 |