我无法快速覆盖上一堂课。按照班上的指示
使用以下条件创建“汽车”类:
a。属性(5)
year –由初始值设定项初始化
- make –由初始化程序初始化
- 模型-由初始化程序初始化
- 颜色-由初始值设定项初始化
- currentSpeed –由初始化程序初始化为0
创建一个继承自Car类的“ Batmobile”子类
属性将保持不变
功能
重写init()函数,使其仅接受年份作为输入,其余属性应自动初始化为 例如:
make – Bat Automotive
模型–蝙蝠车
颜色-黑色
currentSpeed – 100
这些是我创建的类声明: 汽车:
class Car {
//properties of cars
var year : Int
var make : String
var model : String
var color : String
var currentSpeed : Int
//functions of cars
init(year : Int = 0, make : String, model : String , color : String , currentSpeed : Int = 0) {
self.year = year
self.make = make
self.model = model
self.color = color
self.currentSpeed = currentSpeed
}
}
蝙蝠车:
class Batmobile : Car {
override init(year: Int) {
self.year = year
self.make = "Bat Automotive"
self.model = "Bat Mobile"
self.color = "Black"
self.currentSpeed = 100
}
}
当我尝试使用以下方法创建Batmobile对象时:
var myBatmobile = Batmobile(year: 2018)
我收到以下错误:
调用中缺少参数“ make”的参数
我不确定应该将哪些内容传递给Batmobile类以使其正确初始化。我的印象是,覆盖初始化函数会将所有继承的字段替换为我提供的字符串。
答案 0 :(得分:1)
这样做:
class Batmobile : Car {
init(year: Int) {
super.init(year: year,
make: "Bat Automotive",
model: "Bat Mobile",
color: "Black",
currentSpeed: 100)
}
}