함수(Function) VS 메소드(Method)
함수와 메소드를 구분 없이 혼용하는 경우가 있을 수 있습니다. 유사한 개념이지만
함수는 특정 작업을 수행하기 위한 코드들의 묶음이라고 할 수 있고
swift에서의 메소드 같은 경우는 클래스(class), 구조체(struct), 열거형(enum) 내부에 정의된 함수라고 할 수 있습니다.
메소드의 종류
Instance 메소드
타입의 객체를 생성하여 접근할 수 있는 메소드
메소드(default)
기본 메소드로 객체를 생성하여 해당 메소드에 접근이 가능하고 자식 클래스에서 override가 가능한 메소드입니다.
class TestA{
func defaultMethod(){
print("A: defaultMethod")
}
}
class TestB: TestA{
override func defaultMethod(){
print("B: defaultMethod")//override 가능
}
}
//객체 생성
let testA = TestA()
let testB = TestB()
//객체를 통한 메소드 접근
testA.defaultMethod()//A: defaultMethod
testB.defaultMethod()//B: defaultMethod
final 메소드
final 메소드는 객체를 생성하여 해당 메소드에 접근이 가능하고 자식 클래스에서 override가 가능한 메소드입니다.
class TestA{
final func finalMethod(){
print("A: finalMethod")
}
}
//override 불가능
Type 메소드
instance 메소드처럼 따로 객체를 생성해서 접근할 필요없이 type 자체에서 접근할 수 있는 메소드를 의미합니다.
class 메소드
type 자체에서 메소드에 접근이 가능하고 override가 가능합니다.
class TestA{
class func classMethod(){
print("A: classMethod")
}
}
class TestB: TestA{
override class func classMethod(){ //override 가능
print("B: classMethod")
}
}
//타입 자체에서 메소드 접근이 가능
TestA.classMethod()//A: classMethod
TestB.classMethod()//B: classMethod
static 메소드 & final class 메소드
static 메소드와 final class 메소드는 동일한 기능을 가집니다.
type 자체에서 메소드에 접근이 가능하고 override가 불가능합니다.
class TestA{
static func staticMethod(){
print("staticMethod")
}
final class func finalClassMethod(){
print("finalClassMethod")
}
}
//override 불가
//타입 자체에서 메소드 접근이 가능
TestA.staticMethod()//staticMethod
TestB.finalClassMethod()//finalClassMethod

Reference
학습 페이지
www.inflearn.com
'Swift🐤' 카테고리의 다른 글
swift) enumerated() 메소드 (1) | 2024.02.07 |
---|---|
swift) where 키워드 (0) | 2024.01.18 |
Swift) 열거형(enum) (1) | 2023.10.09 |
Swift) Nested Function (0) | 2023.09.06 |
Swift) Property Observers(프로퍼티 옵져버) (0) | 2023.09.04 |
함수(Function) VS 메소드(Method)
함수와 메소드를 구분 없이 혼용하는 경우가 있을 수 있습니다. 유사한 개념이지만
함수는 특정 작업을 수행하기 위한 코드들의 묶음이라고 할 수 있고
swift에서의 메소드 같은 경우는 클래스(class), 구조체(struct), 열거형(enum) 내부에 정의된 함수라고 할 수 있습니다.
메소드의 종류
Instance 메소드
타입의 객체를 생성하여 접근할 수 있는 메소드
메소드(default)
기본 메소드로 객체를 생성하여 해당 메소드에 접근이 가능하고 자식 클래스에서 override가 가능한 메소드입니다.
class TestA{
func defaultMethod(){
print("A: defaultMethod")
}
}
class TestB: TestA{
override func defaultMethod(){
print("B: defaultMethod")//override 가능
}
}
//객체 생성
let testA = TestA()
let testB = TestB()
//객체를 통한 메소드 접근
testA.defaultMethod()//A: defaultMethod
testB.defaultMethod()//B: defaultMethod
final 메소드
final 메소드는 객체를 생성하여 해당 메소드에 접근이 가능하고 자식 클래스에서 override가 가능한 메소드입니다.
class TestA{
final func finalMethod(){
print("A: finalMethod")
}
}
//override 불가능
Type 메소드
instance 메소드처럼 따로 객체를 생성해서 접근할 필요없이 type 자체에서 접근할 수 있는 메소드를 의미합니다.
class 메소드
type 자체에서 메소드에 접근이 가능하고 override가 가능합니다.
class TestA{
class func classMethod(){
print("A: classMethod")
}
}
class TestB: TestA{
override class func classMethod(){ //override 가능
print("B: classMethod")
}
}
//타입 자체에서 메소드 접근이 가능
TestA.classMethod()//A: classMethod
TestB.classMethod()//B: classMethod
static 메소드 & final class 메소드
static 메소드와 final class 메소드는 동일한 기능을 가집니다.
type 자체에서 메소드에 접근이 가능하고 override가 불가능합니다.
class TestA{
static func staticMethod(){
print("staticMethod")
}
final class func finalClassMethod(){
print("finalClassMethod")
}
}
//override 불가
//타입 자체에서 메소드 접근이 가능
TestA.staticMethod()//staticMethod
TestB.finalClassMethod()//finalClassMethod

Reference
학습 페이지
www.inflearn.com
'Swift🐤' 카테고리의 다른 글
swift) enumerated() 메소드 (1) | 2024.02.07 |
---|---|
swift) where 키워드 (0) | 2024.01.18 |
Swift) 열거형(enum) (1) | 2023.10.09 |
Swift) Nested Function (0) | 2023.09.06 |
Swift) Property Observers(프로퍼티 옵져버) (0) | 2023.09.04 |