iOS/Swift
Swift 문법 (8) - 구조체(Struct), 클래스(Class)
포도 동
2020. 12. 7. 21:57
1. 구조체
- 구조체는 값(Value)타입입니다.
- Swift의 구조체는 타입을 정의하는 것이기 때문에 대문자 카멜케이스를 사용합니다.
- struct 키워드를 사용해 정의 할 수 있습니다.
struct 구조체이름 {
//구조체 내용
}
- 프로퍼티는 인스턴스 변수를 의미합니다.
- 메서드는 구조체 안에 들어있는 함수를 의미합니다.
- var로 선언하면 가변 프로퍼티입니다.
- let로 선언하면 불변 프로퍼티 입니다.
- static 키워드를 사용하면 타입 프로퍼티/메서드로 사용할 수 있습니다.
struct Example {
var mutableProperty: Int = 100 //가변 프로퍼티 (값 변경 가능)
let immutableProperty: Int = 100 // 불변 프로퍼티 (값 변경 불가능)
static var typeProperty: Int = 100 // 타입 프로퍼티
// 인스턴스 메서드
func instanceMethod(){
print("Hi instanceMethod")
}
//타입 메서드
static func typeMethod(){
print("Hi typeMethod")
}
}
- var로 선언한 구조체는 값 변경이 가능힙니다. 하지만, 구조체 내부에 let으로 선언한 불변 값은 변경 불가능합니다.
- 타입 프로퍼티/메서드는 인스턴스에서 사용할 수 없습니다.
//가변 인스턴스 생성
var mutable: Example = Example()
//가변 프로퍼티 값 변경 가능
mutable.mutableProperty = 200
print(mutable.mutableProperty) // 200 출력
mutable.immutableProperty = 300 // error 발생 (불변 프로퍼티 값 변경 불가)
//불변 인스턴스 생성
let immutable: Example = Example()
//불변 인스턴스는 가변 프로퍼티도 수정 불가
immutable.mutableProperty = 200 // error 발생
// 타입 프로퍼티와 메서드 사용
Example.typeMethod()
Example.typeProperty = 200
//타입 프로퍼티/메소드는 인스턴스에서 사용 불가
mutable.typeMethod() // error 발생
mutable.typeProperty = 200 // error 발생
2. 클래스
- 클래스는 참조(reference) 타입입니다.
- Swift의 클래스는 대문자 카멜케이스를 사용해 정의합니다.
class 클래스이름 {
//클래스 내용
}
- Swift의 클래스는 다중상속이 불가합니다.
- 재정의가 불가한 static 메서드와, 재정의가 가능한 class 메서드가 있다
class Example {
var mutableProperty: Int = 100 //가변 프로퍼티 (값 변경 가능)
var immutableProperty: Int = 100 // 불변 프로퍼티 (값 변경 불가능)
static var typeProperty: Int = 100 // 타입 프로퍼티
// 인스턴스 메서드
func instanceMethod(){
print("Hi instanceMethod")
}
//타입 메서드
//상속시 재정의 불가 타입 메서드 - static 키워드 사용
static func typeMethod(){
print("Hi typeMethod")
}
//상속시 재정의 가능 타입 메서드 - class 키워드 사용
class func classMethod(){
print("class typeMethod")
}
}
- 클래스 인스턴스는 let 또는 var, 둘 중 무엇으로 선언해도 가변 프로퍼티를 수정할 수 있습니다.
- 클래스 내에 불변 프로퍼티로 선언된 값은 수정이 불가합니다.
//가변 인스턴스 생성
var mutable: Example = Example()
//가변 프로퍼티 값 변경 가능
mutable.mutableProperty = 200
print(mutable.mutableProperty) // 200 출력
mutable.immutableProperty = 300 // error 발생 (불변 프로퍼티 값 변경 불가)
//불변 인스턴스 생성
let immutable: Example = Example()
//불변 인스턴스도 가변 프로퍼티 수정 가능
immutable.mutableProperty = 200
// 타입 프로퍼티와 메서드 사용
Example.typeMethod()
Example.typeProperty = 200
//타입 프로퍼티/메소드는 인스턴스에서 사용 불가
mutable.typeMethod() // error 발생
mutable.typeProperty = 200 // error 발생
* [부스트코스] iOS 프로그래밍을 위한 스위프트 기초 학습 후 정리한 내용입니다.