오버로딩(Overloading)
-함수의 이름은 같지만 파라미터나 리턴 타입 등을 다르게 해서 함수의 중복사용이 가능토록 하는 것
함수를 작성할 때 그냥 같은 함수를 똑같이 작성하면 오류가 발생한다.
ex)
func hello() {
//내용
}
func hello() { //Invalid redeclaration of 'hello()'
//내용
}
알다시피 위와 같이 똑같은 함수를 중복 사용하는 것은 불가능하다.
동일한 함수 이름이지만 파라미터, 리턴 타입을 다르게 만들면?
ex)
func hello() {
print("hello")
}
func hello(name : String) {
print("hello \(name)")
}
func hello() -> String {
return "hello"
}
-위의 3가지 함수는 모두 이름이 같지만 문제없이 실행이 가능하다.
이유는 여러 함수들이 존재할 때, 각 함수를 식별하는 방법은 단순히 함수의 이름을 통해 구분하는 방법이 아니라
함수의 이름, 파라미터(타입, 갯수, Argument Label), 리턴 타입을 모두 종합해서 함수를 식별한다.
따라서 위의 3가지 함수는 이름은 같지만 서로 다른 함수들인 것이다.
이것이 바로 오버로딩
오버로딩(Overloading)의 장점과 단점
장점
-함수의 기능은 같은 기능이지만 파라미터 타입을 다르게 해야 할 때, 각각 다르게 네이밍 해 줄 필요가 없다.
-함수를 호출할 때 함수 이름별로 호출 해 줄 필요가 없다.
단점
-단점 아닌 단점을 말하자면 가독성이 떨어질 수 있음.
Reference
'Swift' 카테고리의 다른 글
함수와 메소드의 차이 (0) | 2023.02.06 |
---|---|
Static과 Class에 관하여 (0) | 2023.01.31 |
서브스크립트에 관하여 (0) | 2023.01.28 |
오버라이딩(Overriding)에 관하여 (0) | 2023.01.26 |
제네릭(Generic)에 관하여 (0) | 2022.11.23 |