객체지향 프로그래밍의 핵심 개념! 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: 학생 클래스 만들기 |
예제 2: 상속 활용하기
class Animal { func sound() { print("동물이 소리를 낸다") } } class Dog: Animal { override func sound() { print("멍멍!") } } let dog = Dog() dog.sound() // 멍멍!
예제 2: 상속 활용하기 |
🚪 클래스의 소멸자 (deinit)
클래스는 메모리에서 해제될 때 deinit 이 호출됩니다.
class FileHandler {
init() {
print("파일 열기")
}
deinit {
print("파일 닫기")
}
}
var handler: FileHandler? = FileHandler()
handler = nil // 파일 닫기 출력
-
주로 리소스 정리할 때 사용됩니다.
클래스의 소멸자 (deinit) |
✏️ 실습 아이디어
-
은행 계좌 클래스
-
속성: 계좌번호, 잔액
-
입금, 출금 메서드 구현
-
-
교통수단 클래스
-
부모 클래스: Transport
-
자식 클래스: Bus, Bicycle (각자 다른 이동 방식 출력)
-
-
게임 캐릭터 클래스
-
속성: 이름, 체력
-
공격, 회복 기능 구현 + 상속으로 직업별 클래스 확장
-
💡 클래스 사용 시 주의할 점
-
참조 타입이기 때문에 여러 변수가 같은 객체를 참조할 수 있어요.
-
메모리 관리(ARC)를 이해하고, 순환 참조(Retain Cycle) 방지 필요.
-
값 복사가 필요한 경우라면 구조체 사용을 고려하세요.
✨ 마무리하며
Swift의 클래스는
복잡한 데이터와 동작을 하나의 객체로 묶어 관리하는 데 최적화된 도구입니다.
-
상속을 통한 코드 재사용
-
메서드와 속성을 통한 객체 관리
-
참조 타입의 특성을 이해하고 활용
이제 여러분도 클래스 기반으로 다양한 앱 기능을 설계할 수 있을 거예요! 😄
댓글 쓰기