83,类工厂方法

#import


@interface Person : NSObject


@property NSString *name;


/*

 什么是类工厂方法:

 用于快速创建对象的类方法,我们称之为类工厂方法

 类工厂方法中主要用于给对象分配存储空间和初始化这块存储空间

 规范:

 1,一定是类方法

 2,方法名称以类的名称开头,首字母小写

 3,一定有返回值,返回值类型是id/instancetype

 */

+(instancetype)person;

+(instancetype)personWithName:(NSString *)name;


@end


@implementation Person


+(instancetype)person{

    //注意:自定义类工厂方法,在类工厂方法中创建对象,一定不要使用类名来创建

    //一定要使用self来创建

    //self在类方法中就代表类对象

    //谁调用当前方法,self就代表谁,这样就可以解决继承中,子类实例化后的对象调用属性与方法带来的报错

    Person *person = [[selfalloc]init];

    return person;

}

+(instancetype)personWithName:(NSString *)name{

    Person *person = [[selfalloc]init];

    person.name = name;

    return person;

}


@end


@interface Student : Person


@property int age;


@end


@implementation Student


@end


/*

 自定义类工厂方法是苹果的一个规范,一般情况下,我们都会为一个类,提供自定义构造方法和自定义类工厂方法,用来创建对象

 */

int main(int argc,const char * argv[]) {

    @autoreleasepool {

        Person *person = [PersonpersonWithName:@"ljs"];

        NSLog(@"%@",[personname]);

        Student *student = [StudentpersonWithName:@"ljw"];

        student.age = 27;

        NSLog(@"name = %@,age = %i",[studentname],[student age]);

    }

    return 0;

}

//2015-12-11 19:55:56.347 7,类工厂方法[3355:310058] ljs

//2015-12-11 19:55:56.348 7,类工厂方法[3355:310058] name = ljw,age = 27

//Program ended with exit code: 0

你可能感兴趣的:(OC)