
Snip20170920_13.png

Snip20170920_14.png

Snip20170920_15.png

Snip20170920_17.png
#import <Foundation/Foundation.h>
#import "Dog.h"
#import "Cat.h"
#import "Animal.h"
#import "Person.h"
#import "Pig.h"
int main(int argc, const char * argv[]) {
/*
Dog *d = [Dog new];
[d eat];
Cat *c = [Cat new];
[c eat];
*/
/*
// 多態(tài): 事物的多種表現(xiàn)形態(tài)
// 動態(tài)類型: 在編譯的時候編譯器只會檢查當前類型對應的類中有沒有需要調(diào)用的方法
// 在運行時,系統(tǒng)會自動判斷a1的真實類型
Animal *a1 = [Dog new];
[a1 eat];
// 注意點: 在多態(tài)中, 如果想調(diào)用子類特有的方法必須強制類型轉(zhuǎn)換為子類才能調(diào)用
// [a1 kanJia];
Dog *d1 = (Dog *)a1;
[d1 kanJia];
*/
Dog *d = [Dog new];
Cat *c = [Cat new];
Pig *p = [Pig new];
[Person food:d];
[Person food:c];
[Person food:p];
/*
什么是多態(tài):
事物的多種表現(xiàn)形態(tài)
在程序中如何表現(xiàn):
父類指針指向子類對象
優(yōu)點:
提高了代碼的擴展性
注意點:
如果父類指針指向子類對象, 如果需要調(diào)用子類特有的方法, 必須先強制類型轉(zhuǎn)換為子類才能調(diào)用
*/
return 0;
}