[swift] 익스텐션과 상속의 장단점 비교

개요

익스텐션과 상속은 Swift에서 코드를 확장하고 재사용하는 데 사용되는 두 가지 주요 기술이다. 각각의 장단점을 비교하여 어떤 상황에 어떤 기술을 사용해야 하는지 알아보자.

익스텐션 (Extensions)

익스텐션은 기존의 클래스, 구조체, 열거형 또는 프로토콜에 새로운 기능을 추가하는 방법을 제공한다.

장점:

단점:

// 익스텐션을 사용하여 Double 타입에 round 메소드를 추가하는 예제
extension Double {
    func round(to places: Int) -> Double {
        let precision = pow(10, Double(places))
        return (self * precision).rounded() / precision
    }
}

상속 (Inheritance)

상속은 부모 클래스의 특성을 자식 클래스가 물려받아 사용할 수 있도록 하는 기술이다.

장점:

단점:

// 상속을 통해 도형을 나타내는 Shape 클래스를 기반으로 Circle 클래스 생성하는 예제
class Shape {
    var name: String
    
    init(name: String) {
        self.name = name
    }
}

class Circle: Shape {
    var radius: Double
    
    init(name: String, radius: Double) {
        self.radius = radius
        super.init(name: name)
    }
}

익스텐션 vs. 상속

결론

익스텐션과 상속은 각자의 장단점을 가지고 있으며, 상황에 따라 적절히 선택하여 사용해야 한다. 코드를 재사용하고 확장하는데 유연하고 효율적으로 사용하기 위해 익스텐션과 상속을 적절히 활용하는 것이 중요하다.

참고 자료