super:是編譯器指示符,僅僅是一個標志,并不是指針,僅僅是標志的當前對象去調(diào)用父類的方法,本質(zhì)還是當前對象調(diào)用
class:獲取方法調(diào)用者的類對象
例如1、:創(chuàng)建一個類Person
再創(chuàng)建一個字類SonPerson繼承自Person
在SonPerson中輸出:
NSLog(@"%@ %@ %@ %@",[self class],[self superclass],[super class],[super superclass]);
結(jié)果:
// SonPerson Person SonPerson Person
如2、在子類SonPerson中調(diào)用父類中的方法+ (void)text
在子類中需要這樣調(diào)用[super text];
在父類中實現(xiàn)
+ (void)text
{
// super:是編譯器指示符,僅僅是一個標志,并不是指針,僅僅是標志的當前對象去調(diào)用父類的方法,本質(zhì)還是當前對象調(diào)用
// class:獲取方法調(diào)用者的類對象
NSLog(@"%@ %@ %@ %@",[self class],[self superclass],[super class],[super superclass]);
}
輸出結(jié)果如下
// SonPerson Person SonPerson Person
注意:
super:是編譯器指示符,僅僅是一個標志,并不是指針,僅僅是標志的當前對象去調(diào)用父類的方法,本質(zhì)還是當前對象調(diào)用
super:并不是讓父類對象調(diào)用方法,調(diào)用者還是本身
class:獲取方法調(diào)用者的類
superclass:獲取方法調(diào)用者的父類