[swift] 상속과 프로토콜 채택

스위프트에서는 상속과 프로토콜 채택을 통해 클래스와 구조체의 기능을 확장하고 재사용할 수 있습니다. 상속은 클래스에 대해서만 가능하며, 프로토콜 채택은 클래스, 구조체, 열거형 모두에게 적용할 수 있습니다.

상속

클래스 간에 상속은 부모 클래스의 속성과 메서드를 자식 클래스에서 재사용하고 확장할 수 있는 기능입니다. 다음은 상속을 사용하는 간단한 예시입니다.

class Animal {
    func makeSound() {
        print("Some sound")
    }
}

class Dog: Animal {
    override func makeSound() {
        print("Bark bark!")
    }
}

let myDog = Dog()
myDog.makeSound() // 출력: "Bark bark!"

자식 클래스인 Dog는 부모 클래스인 Animal을 상속받았으므로 makeSound 메서드를 재정의할 수 있습니다. 이렇게 메서드를 재정의하면 자식 클래스에서 원하는 동작을 수행할 수 있습니다.

프로토콜 채택

프로토콜은 특정한 속성이나 메서드를 가져야 하는 명세입니다. 클래스, 구조체, 열거형은 프로토콜을 채택하여 해당 프로토콜에서 요구하는 기능을 구현할 수 있습니다. 다음은 프로토콜을 채택하는 예시입니다.

protocol Runnable {
    func run()
}

class Dog: Runnable {
    func run() {
        print("Running!")
    }
}

let myDog = Dog()
myDog.run() // 출력: "Running!"

Runnable 프로토콜을 채택한 Dog 클래스는 run 메서드를 구현해야 합니다. 이로써 Dog 클래스는 Runnable 프로토콜의 요구사항을 충족시키고, run 메서드를 사용할 수 있습니다.

상속과 프로토콜 채택의 차이점

상속은 단일 클래스에서 다른 클래스로 속성과 메서드를 상속받을 수 있으므로, 부모 클래스의 모든 특성을 물려받습니다. 반면에 프로토콜 채택은 여러 프로토콜에서 요구하는 동작을 클래스, 구조체, 열거형 등에서 독립적으로 구현할 수 있습니다. 따라서 다중 상속이 필요한 경우에는 프로토콜 채택을 사용해야 합니다.

결론

상속과 프로토콜 채택은 스위프트에서 클래스와 구조체의 기능을 확장하고 재사용하는 방법입니다. 상속은 단일 클래스 간에 속성과 메서드를 물려받아 재정의할 수 있으며, 프로토콜 채택은 여러 프로토콜에서 요구하는 기능을 구현할 수 있습니다. 이러한 개념들을 잘 이해하고 적절히 활용하면 코드의 재사용성과 확장성이 향상될 수 있습니다.

참고 자료: