[swift] 클래스의 메서드 오버로딩과 오버라이딩 개념
클래스의 메서드 오버로딩과 오버라이딩은 객체지향 프로그래밍에서 중요한 개념입니다. 둘 다 다형성을 구현하는 방법으로, 코드의 재사용성과 유지보수성을 높여줍니다. 이번 글에서는 Swift 언어를 중심으로 클래스의 메서드 오버로딩과 오버라이딩에 대해 알아보겠습니다.
메서드 오버로딩 (Method Overloading)
메서드 오버로딩은 동일한 이름을 가진 메서드를 여러 개 정의하는 것을 말합니다. 다만, 각 메서드는 서로 다른 매개변수 타입이나 매개변수 수를 가져야 합니다.
예를 들어,
class Calculator {
func add(_ num1: Int, _ num2: Int) -> Int {
return num1 + num2
}
func add(_ num1: Double, _ num2: Double) -> Double {
return num1 + num2
}
}
let calc = Calculator()
let result1 = calc.add(3, 5) // Int 형식의 add 메서드 호출
let result2 = calc.add(3.5, 2.7) // Double 형식의 add 메서드 호출
위 예시에서 Calculator
클래스의 add
메서드는 두 가지 버전으로 오버로딩되었습니다. 첫 번째는 Int
타입의 매개변수를 받아 Int
를 반환하고, 두 번째는 Double
타입의 매개변수를 받아 Double
을 반환합니다.
메서드 오버라이딩 (Method Overriding)
메서드 오버라이딩은 슈퍼클래스에서 구현된 메서드를 서브클래스에서 같은 이름의 메서드로 다시 구현하는 것을 말합니다. 오버라이딩된 메서드는 슈퍼클래스에서 구현된 메서드를 덮어씁니다.
예를 들어,
class Vehicle {
func move() {
print("이동합니다.")
}
}
class Car: Vehicle {
override func move() {
print("차가 달립니다.")
}
}
위의 예시에서 Vehicle
클래스의 move
메서드는 Car
클래스에서 오버라이딩되어, “차가 달립니다.”라는 메시지를 출력합니다.
결론
메서드 오버로딩과 오버라이딩은 클래스의 다형성을 향상시키는 중요한 개념입니다. 이를 통해 코드를 재활용하고 유지보수하는데 큰 도움이 됩니다. Swift를 비롯한 다른 객체지향 프로그래밍 언어에서도 이러한 개념을 적절히 활용하여 효율적인 코드를 작성할 수 있습니다.
더 많은 정보는 Swift 공식 문서를 참고하시기 바랍니다.