多态往简单来说就是父类的指针指向子类的对象。
//父类
@interfacesuperColor : NSObject
-(void)print;
@end
#import "superColor.h"
@implementationsuperColor
-(void)print{
NSLog(@"supercolor");
}
@end
//red 子类
@interfacecolorRed : superColor
@end
@implementationcolorRed
-(void)print
{
NSLog(@"colorRed");
}
@end
//black 子类
@interfaceblackColor : superColor
@end
@implementationblackColor
-(void)print
{
NSLog(@"blackColor");
}
@end
#import "superColor.h"
//需要操作的类
@interfacePerson : NSObject
-(void)print:(superColor*)color;
@end
@implementationPerson
-(void)print:(superColor*)color
{
NSLog(@"%@",color);
[color print];
}
@end
//如果在使用过程中person类在调用black red类的时候,每次都要初始化,然后在person引入black或者red类进行使用,假若以后再引入blue类,又需要在person里面引入blue类,所以就相对麻烦了。这里就可以使用多台完成,让blac red blued类都j继承一个父类superColor,采用如下初始化方式,就可以只在personlei 里面写一个通用方法就可以调用了。
//这里虽然传的是父类的指针,但是传的是子类的对象
superColor*red = [[colorRedalloc]init];
superColor*black = [[blackColoralloc]init];
Person*person = [[Personalloc]init];
//调用red类 -(void)print:(superColor *)color;
[person print:red];
//调用black类 -(void)print:(superColor *)color;
[person print:black];
网友评论