Swift Class 상속 , overriding

상속

부모 클래스의 특성과 동작을 자식 클래스가 물려받아 확장하고 수정할 수 있다.
이를 통해 코드의 재사용성과 구조화에 유용하다.

class Figure {
    var name = "Unknown"

    init(name: String) {
        self.name = name
    }

    func draw() {
        print("draw \(name)")
    }
}


class Circle: Figure {
    var radius = 0.0
}


let c = Circle(name: "Circle")
c.radius
c.name
c.draw()

class Rectangle: Figure {
    var width = 0.0
    var height = 0.0
}

class Square: Rectangle {

}

위 예제에서 CircleFigure를 상속 받았다. 따라서 Circle 클래스는 Figure 의 속성과 매서드를 자동으로 포함하게 된다.

상속을 통해 코드를 재사용하고 확장함으로써 유지보수가 쉽고 일관된 코드를 작성할 수 있다.
또한, 클래스가 상속되는 것을 막고 싶다면 final 키워드를 사용하여 상속을 막을 수 있다.

Overiding

오버라이딩은 부모 클래스의 메서드, 프로퍼티, 서브스크립트 등 자식 클래스에서 재정의하는 것을 말한다.
이를 통해 자식 클래스는 부모 클래스의 동작을 변경하거나 확장할 수 있다.

final 키워드로 선언되지 않은 class만 가능하다. 오버라이드 하려는 이름과 매개변수 타입은 동일해야한다. 'override 라는 키워드를 사용한다.

class Rectangle: Figure {
    var width = 0.0
    var height = 0.0
}


class Vehicle {
    func makeSound() {
        print("Beep beep!")
    }
}

class Car: Vehicle {
    override func makeSound() {
        print("Honk Honk!")
    }
}


let myVehicle = Vehicle()
let myCar = Car()

myVehicle.makeSound()
myCar.makeSound()

오버라이딩은 클래스의 다형성을 통해 유연하고 확장 가능한 코드를 작성하는데 도움이 된다.

'◽️ Programming > Swift 문법' 카테고리의 다른 글

Swift Initializer  (0) 2024.03.02
Swift Type Casting  (0) 2024.03.02
Swift Instance  (0) 2024.03.01
Swift 계산 속성  (0) 2024.03.01
Swift 저장 속성  (0) 2024.03.01