개요
연관된 값들과 메소드들을 캡슐화하기 위한 자료구조
구조
class SampleClass {
// Property
var a: Int
// Method
func show() {
print(a)
}
// initializer
init(a: Int) {
self.a = a
}
}
- 프로퍼티
- 메소드
- 이니셜라이저
특징
- 클래스는 레퍼런스 타입
var s1 = SampleClass(a: 1)
var s2 = s1
s2.a = 10
print(s1.a)// 10
print(s1 === s2 ? true : false)// true
→ s1을 s2에 복사했을 때, s1와 똑같은 값을 가진 새로운 인스턴스가 생성되는게 아닌, 동일한 인스턴스를 가리키는 레퍼런스가 생성된다. (얕은 복사)
그래서 s1의 값을 변경하면 s2의 값 또한 변경된다.
- 이니셜라이저를 통해 프로퍼티를 초기화 해줘야 한다.
class SampleClass {
var a: Int
var b: Int = 2
var c: Int?
init(a: Int) {
self.a = a
}
}
var s1 = SampleClass(a: 1)
프로퍼티 ‘a’는 기본값이 없고, ‘b’는 기본값이 있으며, ‘c’는 기본값이 없지만 optional 타입이다. 따라서 ‘a’는 인스턴스를 생성할때 항상 초기화를 해줘야한다.
'Swift' 카테고리의 다른 글
[Swift] 자료형 - Enumeration(열거형) 기본 (0) | 2023.03.05 |
---|---|
[Swift] 자료형 - tuple(튜플) (0) | 2023.03.01 |
댓글