티스토리 뷰
클래스는 어떤 객체를 만들기 위해 프로퍼티와 메서드를 정의해놓은 틀입니다.
상속은 한 클래스에 정의된 프로퍼티와 메서드를 물려받는 것을 말합니다.
스위프트에서 상속이 가능한 것은 클래스와 프로토콜이며, 이번 포스팅에서는 클래스의 상속에 대하여 알아볼 것입니다.
class SuperClass(){
func v(){} // 인스턴스 메서드
final func w(){} // 인스턴스 메서드.. 재정의 불가
class func y(){} // 타입 메서드
final class func z(){} // 타입 메서드.. 재정의 불가
static func x(){} // 타입 메서드.. 재정의 불가
}
class SubClass: SuperClass {
override func v(){}
override class func y(){}
}
var firstInstance=SubClass()
firstInstance.v() //인스턴스 메서드
firstInstance.w() //인스턴스 메서드
SubClass.x() // 타입 메서드
SubClass.y() // 타입 메서드
SuperClass.z() // 타입 메서드
인스턴스 메서드는 메서드 앞에 static이나 class가 붙어있지 않습니다.
클래스 내의 인스턴스 메서드를 사용하기 위해선 반드시 해당 클래스의 인스턴스를 먼저 생성해야 합니다.
타입 메서드는 메서드 앞에 static이나 class가 붙어있습니다.
class가 붙은 타입 메서드는 subclass에서 override를 통한 재정의가 가능합니다.
final은 재정의가 불가능한 메서드임을 명시하는 키워드인데, 인스턴스 메서드와 타입 메서드 앞에 붙을 수 있습니다.
재정의가 불가능한 타입 메서드인 final class를 짧게 static이라고 쓸 수 있습니다.
따라서 재정의가 (가능한/불가능한) (타입/인스턴스) 메서드, 총 4가지의 메서드로 나눌 수 있습니다.
인스턴스 메서드의 mutating
struct Volune {
var x: Int = 0, y: Int = 0, z: Int = 0
mutating func bigger(){
self.x = x + 1
self.y = y + 1
self.z = z + 1
//self = Volume(x:x+1,y:y+1,z:z+1)
}
}
var cube = Volune()
cube.bigger()
참조 타입인 클래스와는 달리 구조체나 열거형은 값 타입입니다.
일반적인 인스턴스 메소드 내에서는 값 타입의 프로퍼티를 변경할 수 없지만 mutating 키워드를 사용하면 가능합니다.
물론 구조체의 인스턴스를 상수 let에 담는다면 프로퍼티는 mutating 메서드라도 변경할 수 없습니다.
'Swift' 카테고리의 다른 글
[Swift] 인스턴스 (0) | 2021.01.16 |
---|---|
[Swift] 프로퍼티의 종류 (0) | 2021.01.13 |
[Swift] 옵셔널 (0) | 2021.01.12 |
[Swift] 클래스와 구조체 (0) | 2021.01.10 |
[Swift] 객체 지향 프로그래밍 (0) | 2021.01.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 부스트캠프 6기
- CompositionalLayout
- Testable
- IOS
- State Restoration
- observeOn
- WWDC19
- 포드 풀커슨 알고리즘
- 최단경로 알고리즘
- 최대 매칭
- 최단경로 문제
- 에드몬드 카프 알고리즘
- WWDC17
- 최단경로문제
- 코딩대회
- 벨만포드 시간복잡도
- WWDC21
- mach-o
- CPU와 Memory
- 강한 순환 참조
- 다익스트라 시간복잡도
- 네트워크 플로우
- MeTal
- 벨만포드 알고리즘
- 네트워크 유량
- rxswift
- HIG
- WWDC16
- test coverage
- 컴퓨터 추상화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함