gpt4 book ai didi

swift - 快速覆盖实例属性(帮助)

转载 作者:行者123 更新时间:2023-11-30 13:13:06 25 4
gpt4 key购买 nike

嗨,我最近开始学习 swift ,在阅读继承章节时,我遇到了这个问题,所以我创建了一个车辆类作为我的父类(super class),创建了一个汽车类作为我的子类,汽车类继承自车辆类,之后我创建了一个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)

最佳答案

您在 AutomaticCar 类(class)中犯了一个小错误。在该类中,无需覆盖dangerText,而是当您将新值设置为currentSpeed时,只需更新dangerText,如下所示...

class AutomaticCar:car {
override var currentSpeed: Int {
didSet {
currentGear = (currentSpeed/40)+1
if currentGear <= 4 {
currentGear = self.currentGear
}
else{
currentGear = 4
}
if currentSpeed > maxSpeed {
let slowDown = "Slow Down !"
dangerText = dangerText.stringByAppendingString(slowDown)
}
}
}
}

现在检查dangerText将附带给定当前速度和最大速度的描述。

关于swift - 快速覆盖实例属性(帮助),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38522102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com