fs_*_*gre 0 inheritance subclass init swift
从已经具有初始化程序的类继承时,如何添加自定义初始值设定项?
我所拥有的是一个Vehicle有一个参与的itializer 的类name.我想要做的是继承这个Vehicle类,为新类创建另一个初始化器,但继续使用现有的初始化器.
class Vehicle{
var make:String
init(make:String){
self.make = make
}
}
Run Code Online (Sandbox Code Playgroud)
// Not sure how to structure this class
class Car:Vehicle {
var engine:Double
override init(){
super.init()
}
init(engine:Double){
self.engine = engine
}
}
Run Code Online (Sandbox Code Playgroud)
这就是我希望能够做到的...重新使用现有的初始化程序和新的初始化程序.
let cobalt = Car(make:"Chevy" engine: 2.5)
Run Code Online (Sandbox Code Playgroud)
子类中的任何指定初始值设定项都必须从其直接超类中调用指定的初始值设定项:
类类型的初始化程序委派
为了简化指定和便利初始化程序之间的关系,Swift对初始化程序之间的委托调用应用以下三个规则:
规则1指定的初始化程序必须从其直接超类中调用指定的初始化程序
...
因此,你可以构造你的指定初始化器Car来获取两个参数,make然后engine使用后者来engine初始化子类的成员属性,然后使用提供的make参数(提供给子类初始化器)作为参数调用超类的指定初始化器.超类初始化器.
class Car: Vehicle {
var engine: Double
init(make: String, engine:Double){
self.engine = engine
super.init(make: make)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |