Уточнение выходного класса Swift

В следующем коде почему myRide.drive() печать класса Car вместо "Езда на 200"?

class Car {
    var topSpeed = 200

    func drive() {
        print("Driving at \(topSpeed)")
    }
}

class Futurecar : Car {
    func fly() {
        print ("Flying")
    }
}


let myRide = Car() // Car
myRide.topSpeed // 200
myRide.drive() // Car

let myNewRide = Futurecar() // Futurecar
myNewRide.topSpeed // 200
myNewRide.drive() // Futurecar
myNewRide.fly() // Futurecar

Я понимаю что класс Futurecar наследует от машины класс. Спасибо!

1 ответ

Я полагаю, вы делаете это на детской площадке.

На детской площадке есть дополнительная панель справа, верно? Я думаю, что все эти выводы вы получили с правой панели.

Правая панель не обязательно отображает текст, напечатанный на консоли. Когда вы пишете переменную, на правой панели будет отображаться значение этой переменной. Когда вы пишете вызов метода, на правой панели будет отображаться возвращаемое значение метода. Если метод не возвращает значение, он будет отображать объект, для которого вызывается метод.

В этом случае, drive не возвращает значение. На правой панели отображается объект, на котором он вызывается. FutureCar объект.

Выше объясняется, что вы получите. Теперь давайте посмотрим, как мы можем увидеть напечатанный текст. В нижней части окна Xcode вы увидите это:

введите описание изображения здесь

Нажмите на кнопку с треугольником внутри прямоугольника. Это покажет окно консоли. Выход из вашего print заявления будут отображаться здесь!

Другие вопросы по тегам