【发布时间】:2016-07-22 08:49:14
【问题描述】:
嗨,我最近开始学习 swift,在阅读继承章节时遇到了这个问题,所以我创建了一个车辆类作为我的超类和一个汽车类作为我的子类,汽车类继承自车辆类,之后我已经创建了一个 automaticCar 类作为另一个继承自 car 类的子类(如果有任何歧义,请参阅代码),所以当我尝试覆盖 dangerText 时,Xcode 似乎跳过了代码并且没有更改 dangerText :- ( 如果我做错了什么,请告诉我,我不是在寻找替代方法,因此请通过使用覆盖解决方案更正我的代码来回答 提前致谢!
import Foundation
class viehcle {
//SuperClass viehcle
var currentSpeed = 0
let maxSpeed = 180
var descripion:String{
return "Current speed is \(currentSpeed)"
}
}
class car:viehcle{
//SubClass car inherits from viehcle
var currentGear = 1
var dangerText = ""
//override of description instance property
override var descripion: String{
return ("The current speed is \(super.currentSpeed) and the gear is \(currentGear) \(dangerText)")
}
}
class AutomaticCar:car{
//SubClass AutomaticCar which inherits fom superClass car
//override of dangerText instance property of car
override var dangerText: String{
didSet{
if currentSpeed>maxSpeed{
let slowDown = "Slow Down !"
dangerText = dangerText.stringByAppendingString(slowDown)
}
}
}
//override current speed instance property of car
override var currentSpeed: Int{
didSet{
currentGear = (currentSpeed/40)+1
if currentGear <= 4 {
currentGear = self.currentGear
}
else{
currentGear = 4
}
}
}
}
var myCar = car() // obj/instance created from car class
var myAutomaticCar = AutomaticCar() // obj/instance created from AutomaticCar class
myAutomaticCar.currentSpeed = 300 // set Automatic car's current speed to 300
print(myCar.descripion)
print(myAutomaticCar.descripion)
【问题讨论】:
-
您的代码是正确的。它在 xcode 7.2 中运行良好。
-
它在我的 Xcode 中无法正常工作真的很奇怪,感谢您的回答!我的版本中没有打印减速文本??
-
您收到什么错误?
-
您面临什么问题? xcode 给你什么错误?
-
如果您在覆盖的 dangerText 上设置断点,您会看到编译器不会在该行中断,之后不会打印减速文本!
标签: swift inheritance overriding