什么是多態:
多態就是父類指針指向子類指針。
什么意思呢?
首先,子類要繼承父類
那么就子類可以調用父類的東西
相當於把父類的東西在子類復寫了一遍
那么這個時候我在子類把在父類繼承過來的的東西自己寫一遍,並且改了繼承過來方法里面的東西
這個時候我要調用父類的指針調用子類對象的方法,就會首先在子類里面查找,找到之后就打印出來,如果沒有找到就會在父類里面查找,然后打印出來。
這里面如果子類自己增加方法,而父類沒有,就不能調用,因為父類里面沒有。
也就是說父類和子類的方法要一一對應。
父類可以增加方法,而子類自己增加,就算是自己增加,父類指針也不能調用新增的方法。
看下面的代碼:
mian 函數
#import <Foundation/Foundation.h>
#import "Animal.h"
#import "Pig.h"
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Animal *A =[Animal new];
A=[Pig new];
[A eat];
[A walk];
A=[Dog new];
[A eat];
[A walk];
return 0;
}
}
-------------------------------------------
動物的方法也就是父類
父類里面寫的方法子類可以繼承過去
#import <Foundation/Foundation.h>
@interface Animal : NSObject
-(void)eat;
-(void)walk;
@end
#import "Animal.h"
@implementation Animal
-(void)eat{
NSLog(@"吃東西");
}
-(void)walk;
{
NSLog(@"走路");
}
@end
---------------------------------
Pig類繼承了動物類
#import "Animal.h"
@interface Pig : Animal
//繼承了Animal
@end
#import "Pig.h"
@implementation Pig
-(void)eat
{
NSLog(@"大口吃東西");
}
-(void)sleep;
{
NSLog(@"睡覺");
}
@end
-----------------------------------