多型就是事物的多種表現形態
在編譯的時候編譯器只會檢查當前型別對應的類中有沒有需要呼叫的方法,在執行時,系統會自動判斷物件的真實型別
多型的原理
oc不同於傳統程式語言,它可以在執行時加入新的資料型別和新的程式模組:動態型別識別、動態型別繫結、動態載入
id型別:通用物件指標型別,弱型別,編譯時不進行具體型別檢查
注意點:
在多型中,如果想呼叫子類特有的方法必須強制型別轉換為子類才能呼叫例子:
main.h
#import #import "cat.h"
#import "dog.h"
#import "animal.h"
int main(int argc, const char * ar**)
animal.h
#import ns_assume_nonnull_begin
@inte***ce animal : nsobject
- (void)setname:(nsstring *)name;
-(void)eat:(animal *)a;
@end
ns_assume_nonnull_end
animal.m
#import "animal.h"
@implementation animal
-(void)eat:(animal *)a
- (void)setname:(nsstring *)name
@end
dog.h
#import #import "animal.h"
ns_assume_nonnull_begin
@inte***ce dog : animal
@end
ns_assume_nonnull_end
dog.m
#import "dog.h"
@implementation dog
@end
cat.h
#import #import "animal.h"
ns_assume_nonnull_begin
@inte***ce cat : animal
@end
ns_assume_nonnull_end
cat.m
#import "cat.h"
@implementation cat
@end
物件導向 多型
繼承是多型的基礎,是指物件的多種形態 1.引用的多型 1 父類的引用可以指向本類的物件 2 父類的引用可以指向子類的物件 注意 子類的引用不能指向父類的物件 2.方法的多型 1 建立本類物件時,呼叫的方法是本類的方法 2 建立子類物件時,呼叫的方法是子類重寫的方法或是繼承的方法 注意 如果是子類獨有...
物件導向 多型
多型可以簡單的概括為 乙個介面,多種方法 在程式執行過程中才決定呼叫的函式,簡單的說就是,允許將子類型別的指標賦值給父類型別的指標,賦值後,父類物件就可以根據當前賦給它的子類物件的特徵以不同的方式執行。容易混淆的兩個概念 是指允許存在多個同名的函式,而這些函式的參數列不同 或許引數個數不同,或許引數...
物件導向 多型
多型 可以理解為事物存在的多種體現形態。人 男人,女人 動物 貓,狗。貓 x new 貓 動物 x new 貓 1,多型的體現 父類的引用指向了自己的子類物件。父類的引用也可以接收自己的子類物件。2,多型的前提 必須是類與類之間有關係。要麼繼承,要麼實現。通常還有乙個前提 存在覆蓋。3,多型的好處 ...