[swift] 부모 클래스와 자식 클래스의 관계

부모 클래스와 자식 클래스 사이의 관계는 객체 지향 프로그래밍에서 중요한 개념입니다.

부모 클래스와 자식 클래스

부모 클래스는 다른 클래스에서 상속되는 클래스입니다. 자식 클래스는 부모 클래스로부터 상속받은 속성과 메서드를 가지며, 또한 새로운 속성과 메서드를 추가할 수 있습니다.

// 부모 클래스
class Shape {
    var color: String
    
    init(color: String) {
        self.color = color
    }
    
    func draw() {
        // draw shape
    }
}

// 자식 클래스
class Circle: Shape {
    var radius: Double
    
    init(color: String, radius: Double) {
        self.radius = radius
        super.init(color: color)
    }
    
    func calculateArea() -> Double {
        return Double.pi * radius * radius
    }
}

위의 예제에서 Shape 클래스는 부모 클래스이고, Circle 클래스는 Shape 클래스를 상속한 자식 클래스입니다.

상속과 재정의

자식 클래스는 부모 클래스의 속성과 메서드를 상속받을 뿐만 아니라 필요에 따라 재정의(override)할 수도 있습니다. 이를 통해 자식 클래스는 부모 클래스의 기능을 확장하거나 변경할 수 있습니다.

class Square: Shape {
    var sideLength: Double
    
    init(color: String, sideLength: Double) {
        self.sideLength = sideLength
        super.init(color: color)
    }
    
    override func draw() {
        // draw square
    }
}

위의 예제에서 Square 클래스는 Shape 클래스의 draw 메서드를 재정의하여 사각형을 그리는 기능으로 변경하였습니다.

다형성

부모 클래스 타입으로 선언된 변수나 상수에는 자식 클래스의 인스턴스를 할당할 수 있습니다. 이를 통해 여러 가지 자료형을 하나의 변수나 상수에 담을 수 있으며, 이를 다형성(polymorphism)이라고 합니다.

let shape: Shape = Circle(color: "red", radius: 5.0)

위의 예제에서 shape 변수에 Circle 클래스의 인스턴스를 할당하였습니다.

부모 클래스와 자식 클래스의 관계는 객체 지향 프로그래밍에서 코드의 재사용성과 유연성을 높여주는 중요한 요소입니다.

참고 자료