作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个带有默认 init()
的类。
class Car {
var tires: Int
var doors: Int
init (tires: Int, doors: Int){
self.tires = tires
self.doors = doors
}
}
然后我正在创建一个子类 - 例如 BMW。BMW 子类将有自己独特的发动机容积变量。
class BMW: Car {
var volume: Int
-------- type code here---------
}
我想使用父类的 init(),然后将我的 volume 变量添加到 init() 中,这样当我创建一个 subclass BMW 的实例,代码如下:
var newCar = BMW(tires: Int, doors: Int, volume: Int)
注意*:我不想在子类本身中硬编码任何值(使用 super.init()),我想创建全新的初始化程序。
这可能吗?如果是,你能帮帮我吗?
谢谢。
最佳答案
首先初始化子类的volume
属性,然后调用super
类的指定初始化器
class BMW: Car {
var volume: Int
init(tires: Int, doors: Int, volume: Int) {
self.volume = volume
super.init(tires: tires, doors: doors)
}
}
请阅读 Swift Language Guide: Initialization和 Inheritance
关于swift - 如何在 Swift 中为子类重写初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51197918/
我是一名优秀的程序员,十分优秀!