与Objective-C不同,Swift的初始化方法需要保证类型的所有属性都被初始化,所以初始化方法的调用顺序就很有讲究。在某个类的子类中,初始化方法里语句的顺序并不是随意的,我们需要保证在当前子类实例的成员初始化完成后才能调用父类的初始化方法:
一般来说,子类的初始化顺序是:
1.设置子类自己需要初始化的参数,power=10。
2.调用父类的相应的初始化方法,super.init()。
3.对父类中的需要改变的成员进行设定,name="tiger"。
其中第3步是根据具体情况决定的,如果我们在子类中不需要对父类的成员做出改变的话,就不存在第3步。而在这种情况下,Swift会自动地对父类的对应init方法进行调用,也就是说,第2步的super.init()也是可以不用写的(但是实际上还是调用的,只不过为了简便Swift帮我们完成了)。这种情况下的初始化方法看起来就很简单: