OC多态

多态往简单来说就是父类的指针指向子类的对象。

//父类

@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];

你可能感兴趣的:(OC多态)