在不考虑一切继承、分类的最简单最普通的情况下:
- 调用时刻:
load:程序启动时,类被加载进内存就调用
initialize:当第一次使用这个类或者其子类就会调用
- 调用次数
load:因为加载进内存只会加载一次,所以也只会调用一次
initialize:不确定,具体根据子类和具体调用情况
比如有个类,它有一个子类,第一次使用子类时,父类的initialize会被调用2次
上面说的只是普通情况。但是呢,一个类可能继承于某个super类,还有可能有自己的分类,如果分类中也实现了load方法,它们的调用顺序是怎么样的呢?
这里需要知道--->覆盖方法在分类中的体现
如果父类本身中的方法在子类中被重写,则会优先执行子类中的方法
如果类本身中的方法在分类中被重写,则会优先执行分类中的方法
但是这里必须要知道一个特例->+load
系统首先会调用 super类的load方法,然后再调用该类自身的load方法,再次才会调用该类的分类重写的load方法,也即是说整个继承链包括分类扩展中的load方法都会被执行,只是执行顺序需要关注一下。