多態
Override 重寫
重寫只能重寫方法。對屬性的重寫實際上應該是重寫屬性的SetterGetter方法。
在子類中使用self調用方法,如果該方法已經被override,則會調用子類的方法。如果需要調用被覆蓋的父類的方法實現,則需要使用[super methodName];
來進行調用。
經典多態調用
變量聲明成爲父類指針之後,可以被賦值成爲子類對象,並可以在被賦值調用子類的所有方法和屬性。雖然被聲明的指針是父類指針,但是指針任然以實際類型爲準。
因此可以用父類指針,多態的調用各種子類對象的方法。
SuperClass * point = [[SonClass alloc] init];
[point method]; // 實際調用的是SonClass的method方法,而不是SuperClass的method方法。
point = [[SonClassB alloc] init];
[point method]; // 實際調用的則是SonClassB的method方法。