함수(function) vs 메서드(method)
func
로 만들어진 모든 것은 함수다
- 하지만 클래스(구조체, 열거형) 안에서 정의된 함수는 메서드다
func someFunction() { }
class someClass() {
func someFunctionInClass() { }
}
타입 메서드(Type Method) vs 인스턴스 메서드(Instance Method)
- 인스턴스 메서드는 인스턴스를 생성하고, 인스턴스에서 호출한다
func
앞에 아무것도 없으면 인스턴스 메서드
- 타입 메서드는 인스턴스 생성없이, 타입에서 직접 호출한다
func
앞에 static
, class
가 있으면 타입 메서드
class someClass() {
func printHello() {
print("Hello")
}
static func printHelloWorld() {
print("Hello, World")
}
class func printHelloSwift() {
print("Hello, Swift")
}
}
static
vs class
static
: 오버라이드(override
, 재정의) 불가능
class
: 오버라이드 가능
class AClass {
static func staticTypeMethod() {
print("AClass staticTypeMethod")
}
class func classTypeMethod() {
print("AClass classTypeMethod")
}
}
class BClass: AClass {
override class func classTypeMethod() {
print("BClass classTypeMethod")
}
}