본문 바로가기

프로그래밍 [KOR]/Swift

Swift의 클래스

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