Programming Languages/Swift

Class / Struct

꼰대코더 2025. 12. 26. 23:27

1️⃣ Class (클래스)

목적

  • 복잡한 객체 표현
  • 예: 직원, 상품, 동물 등

구성

  • Properties: 상태 저장
  • Methods: 동작 정의
 
class Animal {
    var name: String
    func makeSound() { }
}

특징

  • 인스턴스 생성: let a = Animal()
  • initializer (init) 로 초기값 강제 가능
  • 상속 가능
  • Reference Type (참조 타입)

2️⃣ Initializer (초기화자)

 
init(name: String) {
      self.name = name
}
  • 인스턴스 생성 시 모든 프로퍼티 초기화 보장
  • self → 프로퍼티 구분용

3️⃣ Subclass (상속)

 
class Mammal: Animal { let hasFurOrHair = true }
  • 부모 클래스: Superclass
  • 자식 클래스: Subclass
  • 부모의 프로퍼티/메서드 상속

4️⃣ Method Override (메서드 재정의)

 
override func description() -> String {
       super.description() + "..."
}
  • override 필수
  • super → 부모 구현 호출

5️⃣ Struct (구조체)

목적

  • 클래스와 동일한 역할 가능
 
struct Reptile {
         var name: String
}

특징

  • 상속 불가
  • Value Type (값 타입)
  • 자동 memberwise initializer 제공

6️⃣ Class vs Struct 핵심 차이

구분ClassStruct
타입 참조 타입 값 타입
상속 가능 불가
복사 참조 공유 값 복사
권장 필요 시 기본 선택

👉 상속 필요 없으면 Struct 권장


7️⃣ Value Type vs Reference Type

Struct (값 타입)

 
var a = s
var b = a
b.x = 10 // a 영향 없음

Class (참조 타입)

 
var c = obj
var d = c
d.x = 10 // c도 변경됨

8️⃣ Enum (열거형)

목적

  • 제한된 값 집합 표현
 
enum TrafficLightColor {
          case red, yellow, green
}

특징

  • 잘못된 값 차단
  • 메서드 포함 가능
 
 

'Programming Languages > Swift' 카테고리의 다른 글

Concurrency  (0) 2025.12.26
Protocols / Extensions/ Error Handling  (0) 2025.12.26
Functions (함수) / Closures  (0) 2025.12.26
Swift / C++ Collection Types 비교  (0) 2025.12.26
Swift vs C/C++ 문법 비교  (0) 2025.12.19