三大特性_多態

多態:

多態的好處和限制:
調用:
若還有一個餵動物的函數:
void feed(Animal *a){
[a eat];//eat方法在之前的Animal類中已經聲明並實現
}

int main(){
——Animal *a=[Cat new];//可以,Cat是Animal
——Cat *c1=[Cat new];//可以
——Cat *c2=[Dog new];//不可以,Dog並不是Cat
——//[c2 eat]編譯的時候是警告,運行時動態監測對象的真實類型,返回的是Dog在喫

——NSObject *o1=[Cat new];//可以
——NSObject *o2=[Animal new];//可以
——NSString *s=[Cat new];//不合理,但由於OC是若語法,xcode並不報錯,一定要注意

——//如果參數中是父類類型,則可以傳入父類或子類類型
——feed(a);
——feed(c1);
——feed(c2);//這就是多態的好處,可以節省代碼

——//多態的限制:
——Animal *a2=[Cat new];
——[a2 run];//Cat有一個run跑的方法。程序在編譯的時候會warning,因爲父類不能調用子類的方法。運行沒問題。
}

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