這是我的代碼。我一直堅持這一點。我似乎無法弄清楚。我遵循的指南要求我在Fighter子類中使用super.init(),但每次嘗試時似乎都會給我一個錯誤。Swift 4 - 無法調用'Spaceship.init'
class Spaceship {
var name = String()
var health = Int()
var position = Int()
init(name: String) {
self.name = name
}
init(health: Int) {
self.health = health
}
init(position: Int) {
self.position = position
}
func moveLeft() {
position -= 1
}
func moveRight() {
position += 1
}
func wasHit() {
health -= 5
}
}
class Fighter: Spaceship {
let weapon: String
var remainingFirePower: Int
init(remainingFirePower: Int) {
self.remainingFirePower = remainingFirePower
}
init(weapon: String) {
self.weapon = weapon
super.init() //Cannot invoke 'Spaceship.init' with no arguments
}
func fire() {
if remainingFirePower > 0 {
remainingFirePower -= 1
} else {
print("You have no more fire power.")
}
}
}
「SpaceShip」的所有初始值設定項都帶有一個參數。您必須調用其中一個初始化程序並傳遞它所需的參數,或者將初始化程序添加到不帶參數的「SpaceShip」中。 – vacawama
所以,我試圖做super.init(名稱:「」)和其他2類似。它仍然沒有工作。顯然,我不允許有超過一個super.init聲明。我也嘗試逗第一個想法,但也沒有奏效。你可以給我一個例子嗎? –
http://swift.sandbox.bluemix.net/#/repl/596ec586c721ee1b86ab9542 – vacawama