2016-07-22 3 views
0

Привет, я недавно начал учиться быстро, когда читал главу о наследовании, я столкнулся с этой проблемой, поэтому я создал класс транспортного средства в качестве своего суперкласса и класса автомобилей в качестве своего подкласса класс автомобиля наследуется от класса транспортного средства, и после этого я создал класс automaticCar в качестве другого подкласса, который наследуется от класса автомобиля (см. код, если есть какая-либо двусмысленность), поэтому, когда я пытаюсь переопределить опасностьText, похоже, что Xcode перескакивает через код и не меняет опасность. Текст :-( , пожалуйста, дайте мне знать, если я что-то делаю неправильно, я не ищу альтернативный способ, поэтому, пожалуйста, ответьте, исправив мой код с помощью переопределенного решения. Заранее благодаренПереопределение свойства экземпляра в swift (help)

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) 
+0

Ваш код верен. он отлично работает в xcode 7.2. – Sahil

+0

его действительно странно, что он не работает правильно в моем Xcode, спасибо за ответ! медленный текст не печатается в моей версии? –

+0

какая ошибка вы получаете? – Apurv

ответ

0

Вы сделали небольшую ошибку в классе AutomaticCar. В этом классе нет необходимости переопределить 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 будет дайте описание для данного currentSpeed ​​и maxSpeed.

+0

спасибо, Naveen Kumar, похоже, что он сделал трюк! –

+0

да немного –

Смежные вопросы