[kotlin] 코틀린에서 메서드의 오버로딩과 오버라이딩

코틀린은 자바와 마찬가지로 객체지향 프로그래밍 언어이며, 오버로딩(overloading)과 오버라이딩(overriding)을 지원합니다. 이 두 가지 개념을 사용하여 코드의 재사용성을 향상시킬 수 있습니다.

메서드 오버로딩 (Method Overloading)

메서드 오버로딩은 같은 이름을 가진 여러 메서드를 정의하는 것입니다. 이러한 메서드들은 매개변수의 개수나 타입이 서로 다른 경우에 사용됩니다. 즉, 동일한 이름을 가진 다수의 메서드가 서로 다른 매개변수를 가지고 있을 때, 컴파일러는 이를 식별하여 적절한 메서드를 호출할 수 있습니다.

class MathOperations {
    fun add(x: Int, y: Int): Int {
        return x + y
    }

    fun add(x: Double, y: Double): Double {
        return x + y
    }
}

위의 예제에서 MathOperations 클래스는 add 메서드를 두 번 오버로딩하고 있습니다. 첫 번째 메서드는 두 개의 정수형 매개변수를 받아 더한 후 정수를 반환하고, 두 번째 메서드는 두 개의 실수형 매개변수를 받아 더한 후 실수를 반환합니다.

메서드 오버라이딩 (Method Overriding)

메서드 오버라이딩은 부모 클래스에서 이미 정의된 메서드를 자식 클래스에서 재정의하는 것을 의미합니다. 이를 통해 자식 클래스는 부모 클래스의 메서드를 재활용하면서 자신의 독특한 기능을 추가할 수 있습니다.

open class Shape {
    open fun draw() {
        println("Drawing a shape")
    }
}

class Circle : Shape() {
    override fun draw() {
        println("Drawing a circle")
    }
}

위의 예제에서 Shape 클래스의 draw 메서드는 부모 클래스에서 정의되었고, Circle 클래스에서는 draw 메서드를 오버라이딩하여 “Drawing a circle”라는 다른 동작을 수행하도록 재정의했습니다.

결론

코틀린에서의 메서드 오버로딩과 오버라이딩은 객체지향 프로그래밍의 핵심 개념으로, 코드의 유연성과 재사용성을 높일 수 있는 강력한 도구입니다. 이러한 개념을 적절히 활용하여 객체지향 설계의 원칙을 준수하면서 효율적인 코드를 작성할 수 있습니다.

참고 문헌: