分類與主類有同名方法的前提下調用順序

如果是load方法

  • 1.load方法的調用是在main()函數之前,且不需要主動調用,程序啓動時就會去執行load方法
  • 2.主類與分類加載都會調用load方法,並且主類調用永遠優先於分類調用
  • 3.如果是多個分類的情況下,分類的調用順序取決於編譯順序,如果分類先調用則先加載,後調用則後加載
  • 4.整體總結就是load方法的調用規則是,主類(父類)優先於子類調用,子類優先於分類調用(父類>子類>分類)

如果是普通方法

  • 1.普通方法調用時,分類中的同名方法會覆蓋主類的方法,進而執行分類中的功能
  • 2.多個分類中出現同名方法時,只會執行一個,最後調用的分類中的方法會覆蓋之前所有的同名方法
  • 3.分類中的方法名和主類方法名一樣會報警告,大概就是說分類中實現的方法主類已經實現了
  • 4.可以把聲明寫在主類, 實現寫在分類,這樣也能調用到分類裏面的代碼
  • 5.同樣可以把聲明和實現寫在不同的分類文件中,還是能找到的, 不過主類要相同
  • 6.普通方法的優先級: 分類> 子類 > 父類, 優先級高的同名方法覆蓋優先級低的

 

initialize

  • 當第一次用到類的時候, 如果重寫了+ initialize方法,會去調用
  • 當調用子類的+ initialize方法時候, 先調用父類的,如果父類有分類, 那麼分類的+ initialize會覆蓋掉父類的, 和普通方法差不多
  • 父類的+ initialize不一定會調用, 因爲有可能父類的分類重寫了它


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章