[Swift Apple ] Swift 클래스(Class)란?

객체지향 프로그래밍의 핵심 개념! Swift에서 클래스(Class) 는 현실 세계의 사물이나 개념을 코드로 표현하기 위한 도구입니다. 클래스를 통해 데이터(속성)동작(메서드) 을 하나로 묶어 반복적이고 복잡한 작업을 효율적으로 처리할 수 있어요.



[Swift Apple ] Swift 클래스(Class)란?
[Swift Apple ] Swift 클래스(Class)란?




✅ 클래스(Class)의 정의

클래스는 객체(Object) 를 만들기 위한 설계도입니다.
이 설계도를 기반으로 실제 사용할 수 있는 객체(인스턴스)를 생성합니다. 
예를 들어, “자동차“라는 클래스를 만들면,
그 클래스를 바탕으로 다양한 자동차 객체를 생성할 수 있어요!



🏗️ 클래스 기본 문법

class Car {
    var color: String = "Red"
    var speed: Int = 0

    func drive() {
        speed += 10
        print("달리는 중! 현재 속도: \(speed)km/h")
    }

    func stop() {
        speed = 0
        print("멈췄습니다.")
    }
}

객체(인스턴스) 생성

let myCar = Car()
myCar.drive()
myCar.stop()







🎯 클래스의 주요 특징

특징

설명

참조 타입 (Reference Type)

변수에 저장 시 ‘주소’를 참조

상속 가능

다른 클래스의 기능을 물려받을 수 있음

초기화 필요

사용자 정의 생성자(init) 사용 가능

소멸자(deinit)

객체가 메모리에서 해제될 때 호출됨

동일성 비교

=== 연산자를 사용해 같은 인스턴스인지 확인




⚡ 클래스 vs 구조체 차이

구분

클래스 (Class)

구조체 (Struct)

타입

참조 타입

값 타입

상속

✅ 가능

❌ 불가능

소멸자

있음

없음

사용 목적

복잡한 객체 관리

가벼운 데이터 전달

예시

사용자 계정, 게임 캐릭터

좌표, 설정값

💡 TIP: Swift에서는 단순 데이터는 구조체,
복잡한 관계와 상속이 필요한 경우 클래스 사용을 권장해요.





🧪 클래스 실습 예제


예제 1: 학생 클래스 만들기

class Student {
    var name: String
    var grade: Int

    init(name: String, grade: Int) {
        self.name = name
        self.grade = grade
    }

    func introduce() {
        print("안녕하세요, \(grade)학년 \(name)입니다.")
    }
}

let student = Student(name: "지우", grade: 6)
student.introduce()


예제 1: 학생 클래스 만들기
예제 1: 학생 클래스 만들기




예제 2: 상속 활용하기

class Animal {
    func sound() {
        print("동물이 소리를 낸다")
    }
}

class Dog: Animal {
    override func sound() {
        print("멍멍!")
    }
}

let dog = Dog()
dog.sound()  // 멍멍!


예제 2: 상속 활용하기
예제 2: 상속 활용하기




🚪 클래스의 소멸자 (deinit)


클래스는 메모리에서 해제될 때 deinit 이 호출됩니다.

class FileHandler {
    init() {
        print("파일 열기")
    }

    deinit {
        print("파일 닫기")
    }
}

var handler: FileHandler? = FileHandler()
handler = nil   // 파일 닫기 출력

  • 주로 리소스 정리할 때 사용됩니다.



클래스의 소멸자 (deinit)
클래스의 소멸자 (deinit)



✏️ 실습 아이디어

  1. 은행 계좌 클래스

    • 속성: 계좌번호, 잔액

    • 입금, 출금 메서드 구현

  2. 교통수단 클래스

    • 부모 클래스: Transport

    • 자식 클래스: Bus, Bicycle (각자 다른 이동 방식 출력)

  3. 게임 캐릭터 클래스

    • 속성: 이름, 체력

    • 공격, 회복 기능 구현 + 상속으로 직업별 클래스 확장





💡 클래스 사용 시 주의할 점

  • 참조 타입이기 때문에 여러 변수가 같은 객체를 참조할 수 있어요.

  • 메모리 관리(ARC)를 이해하고, 순환 참조(Retain Cycle) 방지 필요.

  • 값 복사가 필요한 경우라면 구조체 사용을 고려하세요.




✨ 마무리하며


Swift의 클래스는

복잡한 데이터와 동작을 하나의 객체로 묶어 관리하는 데 최적화된 도구입니다.

  • 상속을 통한 코드 재사용

  • 메서드와 속성을 통한 객체 관리

  • 참조 타입의 특성을 이해하고 활용


이제 여러분도 클래스 기반으로 다양한 앱 기능을 설계할 수 있을 거예요! 😄

댓글 쓰기