DevPrep

Все темы › Объектно-ориентированное программирование (ООП)

Наследование

Junior

Суть

Наследование — механизм, при котором класс получает свойства и методы родительского класса и может их расширять или переопределять. Это отношение «is-a»: Circle является Shape. Наследование даёт полиморфизм подтипов: там, где ожидается Shape, можно передать Circle.

В Swift

class Shape {
    func area() -> Double { 0 }
    func describe() -> String { "area = \(area())" }
}

final class Circle: Shape {
    let radius: Double
    init(radius: Double) { self.radius = radius }
    override func area() -> Double { .pi * radius * radius }
    override func describe() -> String { "circle, " + super.describe() }
}

let shapes: [Shape] = [Circle(radius: 1), Shape()]
for s in shapes { print(s.describe()) }
// circle, area = 3.141592653589793
// area = 0.0

Плюсы и цена

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store