兩階段初始化
Two-Phase Initialization
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🔗 原始碼:repl.it
Last updated
Was this helpful?