728x90
Method and Subscript 사용법 & 예제 [1/2]
인스턴스(Instance) 메서드란?
인스턴스 메서드는 특정 타입의 인스턴스에 속한 함수를 뜻 합니다.
문법은 함수와 동일하고 차이점은 인스턴스를 통해 호출 한다는 것과 구현하는 위치 입니다.
함수는 특정형식에 연관 되지 않은 동작, 메소드는 특정 형식과 연관된 동작
func name(parameters) -> ReturnType {
Code
}
instance.method(parameters)
사용 예제
클래스로 구현한 인스턴스
class Sample {
var data = 0
static var sharedData = 123
func doSomething() {
print(data)
Sample.sharedData //Static 값에 접근하기 위해서는 형식이름으로 접근 해야 한다.(그냥 이름만 쓰면 X)
}
func call() {
doSomething() //self 생략하고 이름만으로 인스턴스 내 메소드 접근 가능
}
}
let a = Sample()
//인스턴스 이름으로 접근
//메소드는 인스턴스 이름으로 접근해야 함
a.data
a.doSomething()
a.call()
클래스 인스턴스 값을 바꾸는 인스턴스 메소드
class Size {
var width = 0.0
var height = 0.0
func enlarge() {
width += 1.0
height += 1.0
}
}
let s = Size()
s.enlarge()
구조체 인스턴스 값을 바꾸는 인스턴스 메소드
struct Size {
//Class에서는 인스턴스 메소드가 인스턴스 속성을 바꿔도 상관 없었는데
//Struct에서는 바꾸려면 mutating Keyword 붙여야함
//인스턴스 호출도 var로 바꾸기(값 형식)
var width = 0.0
var height = 0.0
mutating func enlarge() {
width += 1.0
height += 1.0
}
}
var s = Size()
s.enlarge()
타입(Type) 메서드란?
속성이 인스턴스 속성과 타입 속성으로 나뉘는 것처럼,
메소드도 인스턴스 메소드 와 타입 메소드로 나뉩니다.
타입 메소드는 형식에 관련된 메소드로,
인스턴스와 마찬가지로 [ 클래스 구조체 열거형 ] 모두 구현 가능
static func name(parameters) -> ReturnType {
statements
}
class func name(parameters) -> ReturnType {
statements
}
Type.method(parameters)
사용 예제
class Circle {
static let pi = 3.14
var radious = 0.0
func getArea() -> Double {
return radious * radious * Circle.pi //타입 속성은 타입으로 접근(static)
}
//Type method
// static func printPi() {
// print(pi) //Type 속성에 바로 접근가능
// }
class func printPi() {
print(pi) //Type 속성에 바로 접근가능
}
}
Circle.printPi()
class StrokeCircle: Circle {
//static keyword 서브 클래스에서 오버라이딩 불가능
//class func은 오버라이딩 가능 ( 인스턴스 메소드도 동일한 규칙 적용 가능 )
override static func printPi() {
print(pi)
}
}
출처 : 어서와! Swift는 처음이지?(Programmers)
728x90
'Language > Swift' 카테고리의 다른 글
[Swift] Clousure(클로저) 사용법 & 예제 (0) | 2020.09.14 |
---|---|
[Swift] Method and Subscript 사용법 & 예제 [2/2] (0) | 2020.09.11 |
[Swift] Mutating Keyword 사용법 & 예제 (0) | 2020.09.09 |
[Swift] Initializers (초기화) 사용법 & 예제 [2/2] (0) | 2020.09.08 |
[Swift] Initializers (초기화) 사용법 & 예제 [1/2] (0) | 2020.09.08 |