14. 클래스
정의
- 클래스는 참조 타입이다.
- 다중 상속이 되지 않는다.
class 이름 {
/* 구현부 */
}
프로퍼티 및 메서드
class Sample {
var mutableProperty: Int = 100 // 가변 프로퍼티
let immutableProperty: Int = 100 // 불변 프로퍼티
static var typeProperty: Int = 100 // 타입 프로퍼티
//인스턴스 메서드
func instanceMethod() {
print("instance method")
}
// 타입 메서드
// 재정의 불가 타입 메서드 - static
static func typeMethod() {
print("type method - static")
}
// 재정의 가능 타입 메서드 - class
class func classMethod() {
print("type method - class")
}
}
나머지는 구조체와 같지만 메서드는 조금 다르다.
상속을 받았을 때 재정의가 가능한 class와 불가능한 static이 있다.
클래스 사용
가변으로 선언되면 값을 바꿀 수 있다.
var mutableReference: Sample = Sample()
mutableReference.mutableProperty = 200
반면, 불변으로 선언되면 값을 바꿀 수 없다.
let immutableReferencee: Sample = Sample()
imuutableReference.mutableProperty = 200 // 오류 발생
타입 프로퍼티를 사용할 수 있고, 이는 구조체와 크게 다르지 않다.
Sample.typeProperty = 300
Sample.typeMethod() // type method
예시
class Student {
var name: String = "unknown"
var `class`: String = "Swift"
class func selfIntroduce() {
print("학생타입입니다")
}
func selfIntroduce() {
print("저는 \(self.class)반 \(name)입니다")
}
}
Student.selfIntroduce() // 학생타입입니다
var fuyukawa: Student = Student()
fuyukawa.name = "fuyukawa"
fuyukawa.class = "스위프트"
fuyukawa.selfIntroduce() // 저는 스위프트반 fuyukawa입니다
let jina: Student = Student()
jina.name = "jina"
jina.selfIntroduce() // 저는 Swift반 jina입니다
전반적으로 구조체와 비슷하지만 차이점은 let으로 선언했음에도 가변프로퍼티는 수정할 수 있다는 점이다.
©️NAVER Boostcourse. All Rights Reserved.
'앱 개발 > IOS' 카테고리의 다른 글
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 16. 클래스 vs 구조체 / 열거형 (0) | 2024.03.07 |
---|---|
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 15. 열거형 (0) | 2024.03.06 |
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 13. 구조체 (0) | 2024.03.06 |
[IOS 프로그래밍을 위한 스위프트 기초] Quiz 1-5 스위프트 옵셔널 퀴즈 (0) | 2024.03.01 |
[IOS 프로그래밍을 위한 스위프트 기초] Quiz 1-4 스위프트 제어구문 퀴즈 (0) | 2024.03.01 |