Implicit super.init()
If a subclass initializer:
performs no customization in phase 2 of the initialization process
the superclass has a zero-argument designated initializer
you can omit a call to super.init()
after assigning values to all of the subclass’s stored properties
class Cat : Animal {
override init() {
print("Cat created")
// super.init() implicitly called here. ⭐
}
override func makeNoise() {
print("Mews")
}
}
class Animal {
init() {
print("Animal Created")
}
func makeNoise() {
fatalError("Must Override to get specific Noise")
}
}
let cat = Cat()
cat.makeNoise()
// output:
// Cat created
// Animal created
// Mews
原始碼: