[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 공식 문서를 참고하시기 바랍니다.