在不考慮一切繼承、分類(lèi)的最簡(jiǎn)單最普通的情況下:
- 調(diào)用時(shí)刻:
load:程序啟動(dòng)時(shí),類(lèi)被加載進(jìn)內(nèi)存就調(diào)用
initialize:當(dāng)?shù)谝淮问褂眠@個(gè)類(lèi)或者其子類(lèi)就會(huì)調(diào)用
- 調(diào)用次數(shù)
load:因?yàn)榧虞d進(jìn)內(nèi)存只會(huì)加載一次,所以也只會(huì)調(diào)用一次
initialize:不確定,具體根據(jù)子類(lèi)和具體調(diào)用情況
比如有個(gè)類(lèi),它有一個(gè)子類(lèi),第一次使用子類(lèi)時(shí),父類(lèi)的initialize會(huì)被調(diào)用2次
上面說(shuō)的只是普通情況。但是呢,一個(gè)類(lèi)可能繼承于某個(gè)super類(lèi),還有可能有自己的分類(lèi),如果分類(lèi)中也實(shí)現(xiàn)了load方法,它們的調(diào)用順序是怎么樣的呢?
這里需要知道--->覆蓋方法在分類(lèi)中的體現(xiàn)
如果父類(lèi)本身中的方法在子類(lèi)中被重寫(xiě),則會(huì)優(yōu)先執(zhí)行子類(lèi)中的方法
如果類(lèi)本身中的方法在分類(lèi)中被重寫(xiě),則會(huì)優(yōu)先執(zhí)行分類(lèi)中的方法
但是這里必須要知道一個(gè)特例->+load
系統(tǒng)首先會(huì)調(diào)用 super類(lèi)的load方法,然后再調(diào)用該類(lèi)自身的load方法,再次才會(huì)調(diào)用該類(lèi)的分類(lèi)重寫(xiě)的load方法,也即是說(shuō)整個(gè)繼承鏈包括分類(lèi)擴(kuò)展中的load方法都會(huì)被執(zhí)行,只是執(zhí)行順序需要關(guān)注一下。