【问题标题】:Swift class Inheritance output clarificationSwift 类继承输出说明
【发布时间】:2017-09-24 08:17:25
【问题描述】:

在下面的代码中,为什么myRide.drive() 打印一个类Car 而不是“Driving at 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 类继承自汽车类。谢谢!

【问题讨论】:

  • myRide.drive() 确实打印“以 200 的速度行驶”... – 除此之外,您没有发布您的真实代码(例如 Futurecar != Futurcar)
  • 根据您的代码,我得到以下日志:“Driving at 200 Driving at 200 Flying”,这意味着myRide.drive() 打印“Driving at 200”
  • @Martin R. 这是一个错字。
  • @Ahmad F 调试区显示汽车

标签: swift inheritance swift-class


【解决方案1】:

我想你是在操场上这样做的。

在操场上,右边有一个额外的面板,对吧?我认为您获得的所有这些输出都来自右侧面板。

右侧面板不一定显示打印到控制台的文本。写入变量时,右侧面板将显示该变量的值。编写方法调用时,右侧面板会显示方法的返回值。如果该方法没有返回值,它将显示调用该方法的对象。

在这种情况下,drive 不返回值。右侧面板显示调用它的对象 - FutureCar 对象。

上面解释了你得到的输出。现在让我们继续看看如何查看打印的文本。在 Xcode 窗口的底部,你会看到:

单击矩形内带有三角形的按钮。这将显示控制台窗口。 print 语句的输出将显示在这里!

【讨论】:

  • 是的。这是快速的游乐场。谢谢!
  • @Dani 这就是我的想法。打开控制台后看到预期的输出了吗?
  • 是的!我很困惑。谢谢!
  • @Dani 如果您认为我的回答回答了您的问题,请考虑在系统允许时单击该复选标记接受它!
  • 我不能,因为我的声望少于 15 个。
猜你喜欢
  • 2013-12-05
  • 1970-01-01
  • 2019-09-04
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多