[swift] 상속과 다형성의 관계 이해하기

이번에는 Swift에서 상속과 다형성의 개념을 살펴보겠습니다. 상속은 객체 지향 프로그래밍의 주요 개념 중 하나이며, 다형성은 이와 밀접한 관계를 갖고 있습니다. 먼저, 상속의 개념과 Swift에서의 구현 방법을 살펴보겠습니다.

상속

상속은 기존에 정의된 클래스의 특성을 새로운 클래스가 이어받아 확장하는 개념입니다. 이를 통해 코드의 재사용성을 높일 수 있고, 유지보수가 용이해집니다.

class Animal {
    var name: String
    
    init(name: String) {
        self.name = name
    }
    
    func makeSound() {
        // abstract method
    }
}

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

위 예제에서 Animal 클래스는 name 속성과 makeSound 메서드를 가지고 있습니다. 이후 Dog 클래스는 Animal 클래스를 상속받아 makeSound 메서드를 오버라이딩하여 구현하는 예제입니다.

다형성

다형성은 상속과 밀접한 관련을 갖는데, 간단히 말해 하나의 인터페이스에 대해 여러 가지 형태로 구현될 수 있는 능력을 의미합니다. 이는 코드의 유연성을 높여주고, 객체 지향 프로그래밍에서 매우 중요한 개념 중 하나입니다.

let myAnimal: Animal = Dog(name: "Buddy")
myAnimal.makeSound() // "Woof!"

myAnimal 변수는 Animal 타입으로 선언되었지만, 실제로는 Dog 인스턴스를 참조하고 있습니다. 따라서 makeSound 메서드 호출 시에는 Dog 클래스에 정의된 내용이 실행되는데, 이것이 바로 다형성의 예시입니다.

상속과 다형성은 객체 지향 프로그래밍의 기본 개념 중 하나로, Swift에서도 강력하게 지원됩니다. 이를 통해 코드의 재사용성과 유연성을 높일 수 있으며, 복잡한 프로그램을 더 쉽게 구현할 수 있습니다.

참고 자료:

새로운 개념이지만 중요한 내용이니 꼭 숙지하고 활용하시기 바랍니다!