728x90
반응형
본 포스트를 읽기 전에 구조체 포스트를 먼저 읽으시면 클래스에 대해서 더욱 이해하기 쉬울 것임
https://thinking-developer.tistory.com/96#recentEntries
[Swift] 구조체 (Structure) | 타입 프로퍼티 (Type Property) | 타입 메서드 (Type Method)
구조체 (Structure) 데이터 타입을 정의함 👉 대문자 CamelCase를 사용 프로퍼티와 메서드로 구성 프로퍼티: 구조체 내에 정의되어 있는 변수 메서드: 구조체 내에 정의되어 있는 함수 다른 언어의 클
thinking-developer.tistory.com
클래스란?
- 클래스는 참조 타입의 사용자 정의 타입임
- 타입 이름은 대문자 카멜케이스를 사용하여 정의
- 다른 언어들과 달리 Swift의 클래스는 다중 상속이 불가능함
클래스의 메서드 정의
- 클래스의 인스턴스 메서드 정의 방법은 일반적인 구조체 인스턴스 메서드와 동일함
- 단, 타입 메서드는 두 가지 종류가 있음 - 상속 후 재정의 여부에 따라 다름
- 재정의가 불가능한 타입 - static func 함수명 { . . . }
- 재정의가 가능한 타입 - class func 함수명 { . . . }
클래스와 구조체의 차이
- 구조체는 값 타입의 사용자 정의 타입
- 클래스는 참조 타입의 사용자 정의 타입
- 클래스는 구조체와 다르게 var 혹은 let으로 생성한 인스턴스 모두, 내부의 프로퍼티 값 변경 가능
- 하지만 처음부터 불변 프로퍼티로 정의된 것은 추후에 변경할 수 없는 것은 동일함
클래스의 정의 예시
class Sample {
// 가변 프로퍼티
var mutableProperty: Int = 100
// 불변 프로퍼티
let immutableProperty: Int = 200
// 타입 프로퍼티
statci var typeProperty: Int = 300
// 인스턴스 메서드
func instanceMethod() {
print("instance method")
}
// 타입 메서드 - 상속 불가 (static 키워드)
static func typeMethod() {
print("type method - static")
}
// 타입 메서드 - 상속 가능 (class 키워드)
class func classMethod() {
print("type method - class")
}
}
클래스의 사용 예시
// 가변 인스턴스 생성
var mutableReference: Sample = Sample()
// 가변 인스턴스의 가변 프로퍼티 조작 (불변 프로퍼티는 불가능)
mutableReference.mutableProperty = 500
// 불변 인스턴스 생성
let mutableReference: Sample = Sample()
// 불변 인스턴스의 가변 프로퍼티 조작 (불변 프로퍼티는 불가능)
immutableReference.mutableProperty = 800
// 타입 프로퍼티 및 메서드
Sample.typeProperty = 1000
Sample.typeMehtod()
본 내용은 부스트코스의 'iOS 프로그래밍을 위한 스위프트 기초' 강의를 토대로 작성되었습니다
728x90
반응형