Class
'class' 뒤에 class 이름을 붙여 class를 만든다.
class 의 프로퍼티 선언은 상수나 변수선언과 동일하다. 하지만 프로퍼티들은 해당 classd의 context에 속해진다.
함수도 같은 방법으로 사용하면 된다.
Class instance 만들기
클래스 인스턴스를 만드려면 이름 뒤에 괄호를 붙여주면 된다. 또한 class의 프로퍼티에 접근하기 위해선 쩜(.)을 사용하면 된다.
var shape = Shape()
shape.numberOfSides = 7
var shapeDescription = shape.simpleDescription()
위 코드는 initializer를 빼먹고 있다. initializer는 class 의 instance 가 만들어질 때 초기 설정을 해주는 역할이다.
class NamedShape {
var numberOfSides: Int = 0
var name: String
init(name: String) {
self.name = name
}
func simpleDescription() -> String {
return "A shape with \(numberOfSides) sides."
}
}
여기서 나온 self는 코드에서도 알수 있듯이 initializer 의 프로퍼티인 name 과 class의 name을 구분하기 위해 쓰여졌다.
클래스 인스턴스를 만들때 initializer의 arguments들은 function call 처럼 전달된다.
모든 클래스의 프로퍼티들은 값이 선언되거나 initializer 둘 중 한가지 방식으로 할당되어야 한다.
override func
슈퍼클래스(부모클래스)의 메소드는 subclass 에서 override라고 표기된다. override는 override된 함수가 아닐경우 에러가 나니 아무데나 붙이지 말자.
Getter & Setter
간단한 프로퍼티는 getter 와 setter를 가질 수 있다.
var perimeter: Double {
get {
return 3.0 * sideLength
}
set {
sideLength = newValue / 3.0
}
}
var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")
print(triangle.perimeter)
// Prints "9.3"
triangle.perimeter = 9.9
print(triangle.sideLength)
// Prints "3.3000000000000003
Swift101 은 여기서 끝내고 이제 한 주제씩 공부해보려 한다.
- collection Types
- Control Flow
- Functions Closures
- Enumeration
- Structures and Classes
- Properites
- Methods
- Subscripts
- Inheritace
- Initialization
- Deinitialization
- Optional Chaining
- Error Handling
- Nested Types
- Extensions
- Protocols
- Generics
- Automatic Reference Counting
- Memory Safty
- Access Control
- Advanced Operators
[참고] : Apple Inc. ‘The Swift Programming Language (Swift 5.0).’ Apple Books. https://books.apple.com/kr/book/the-swift-programming-language-swift-5-2/id881256329
'Swift' 카테고리의 다른 글
Swift 알고리즘에 쓰이는 문법 정리 (0) | 2020.07.07 |
---|---|
Swift String to Array (component) (0) | 2020.07.03 |
Swift 코딩 테스트 준비 - Java to Swift 😱 (1) | 2020.07.01 |
[🗂 Swift Data Structure] - Stack (0) | 2020.06.25 |
스위프트 101 - 소개 (0) | 2020.03.25 |
댓글