objective c支持类方法覆盖

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fjh658/article/details/23198459

objective c支持类方法覆盖




#import <Foundation/Foundation.h>




@interface Person : NSObject




+ (void) print;




- (void) test;
@end
/////////////////////////////////////////////////////////////////


#import "Person.h"




@implementation Person




+(void)print
{
    NSLog(@"person");
}


-(void)test
{
    [[self class]print];//关键代码
}


@end
/////////////////////////////////////////////////////////////////




#import "Person.h"




@interface SubPerson : Person




+(void)print;




@end
/////////////////////////////////////////////////////////////////


#import "SubPerson.h"




@implementation SubPerson




+(void)print
{
    NSLog(@"subperson print");
}


@end
/////////////////////////////////////////////////////////////////




调用方
   Person *person = [[SubPerson alloc]init];
   [person test];


如print是类方法,在其他语言中不支持类方法覆盖,oc支持。所以[person test];结果是subperson print


qq交流群 8487420

猜你喜欢

转载自blog.csdn.net/fjh658/article/details/23198459