본문 바로가기
Swift/기본

Class vs Struct / Enum

by 밤새는탐험가 2024. 4. 3.

열거형과 구조체는 값 타입 

클래스는 참조 타입 

 

클래스는 상속 가능

열거형과 구조체는 상속 불가능 

 

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