티스토리 뷰

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 프로그래밍을 위한 스위프트 기초 학습 후 정리한 내용입니다.

'iOS > Swift' 카테고리의 다른 글

Swift 문법 (10) - 클로저 (Closure)  (0) 2020.12.09
Swift 문법 (9) - 열거형  (0) 2020.12.08
Swift 문법 (7) - 옵셔널  (0) 2020.12.06
Swift 문법 (6) - 반복문  (0) 2020.12.06
Swift 문법 (5) - 조건문  (0) 2020.12.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함