Load方法执行时机和执行顺序
load方法是在main函数前调用的,引入项目中就会调用,且只会调用一次,那么当类和类的Category都有load方法是怎么调用的?类有多个Category,且都实现了load方法又是怎么调用的?子类和父类都实现了load方法是怎么调用的?带着这些问题,我们来看下下面的结论和测试用例。
结论:
1.当类和类的Category中的load方法都存在时,先调用类中load方法,然后调用Category中的load方法
2.父类的load方法优于子类load方法,子类调用load方法的顺序取决于编译的顺序
3.category的load调用顺序与类没有关系,与编译的顺序一致
4.类与类的category中的load方法都会调用
5.当有多个类的时候,同一层级的类的load调用顺序取决于编译顺序。
Initialize方法执行顺序
Initialize方法是在类第一次初始化的时候调用的,且只调用一次,但是在子类和父类都是有Initialize方法的时候,是怎么调用的呢?类和Category中都有Initialize又是怎么调用的? 子类没有实现Initialize方法,会不会调用父类的Initialize方法呢?带着这些问题,我们可以看下下面的结论和测试实验。
结论:
1.如果类和类Category都实现了initialize方法,调用Category的initialize方法,会覆盖类中的方法,只执行一个,如果多个category,则调用编译顺序最后的initialize方法。
2.如果父类和子类都实现了initialize方法,在调用子类时,如果父类的initialize方法调用过,则只调用子类initialize方法,如果父类没用过,则先调用父类的Category的initialize方法,在调用子类的initialize方法(测试2)。如果调用子类的时候,已经初始化过父类的initialize,则在初始化父类的时候,不会再调用initialize方法(测试3)
3.如果子类没有实现initialize方法,父类实现了initialize方法,调用子类的时候,会先调用父类的initialize方法,再调用子类的实例方法。(测试4)
网友评论