열거형과 구조체는 값 타입
클래스는 참조 타입
클래스는 상속 가능
열거형과 구조체는 상속 불가능
struct ValueType {
var property = 1
}
class ReferenceType {
var property = 1
}
첫 번째 구조체 인스턴스를 두 번째 인스턴스에 복사한 뒤
두 번째 구조체 인스턴스의 property 값을 변경해도
첫 번째 구조체 인스턴스의 property 값의 변화는 없다
⭐️ 두 번째 구조체 인스턴스는 첫 번째 구조체를 복사한 별도의 인스턴스이기 때문이다 ⭐️
// 첫 번째 구조체 인스턴스
let firstStruct = ValueType()
// 두 번째 구조체 인스턴스에 첫 번째 인스턴스 복사
var secondStruct = firstStruct
// 두 번째 구조체 인스턴스 프로퍼티 값 수정
secondStruct.property = 2
print(firstStruct.property) // 1
print(secondStruct.property) // 2
구조체 인스턴스와 마찬가지로
클래스 인스턴스도 동일한 방법으로 구현한다면
첫 번째 클래스 인스턴스를 두 번째 클래스 인스턴스에 복사한 뒤
두 번째 클래스 인스턴스의 property 값을 변경하면
첫 번째 클래스 인스턴스의 property 값도 변경된다.
⭐️ 두 번째 클래스 참조는 첫 번째 클래스 인스턴스를 참조하기 때문 ⭐️
let firstClass = ReferenceType()
let secondClass = firstClass
secondClass.property = 2
print("first class reference property : \(firstClass.property)") // 2
print("second class reference property : \(secondClass.property)") // 2
'Swift > 기본' 카테고리의 다른 글
상속 (0) | 2024.04.04 |
---|---|
프로퍼티 (0) | 2024.04.03 |
열거형 (0) | 2024.04.02 |
클래스 (Class) (0) | 2024.04.01 |
구조체 (Struct) (0) | 2024.04.01 |