OC多态

作者: bugLife丶 | 来源:发表于2019-07-25 15:27 被阅读0次

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

    //父类

    @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多态

          本文链接:https://www.haomeiwen.com/subject/jcphrctx.html