这是我的代码。我一直坚持这一点。我似乎无法弄清楚。我遵循的指南要求我在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