OC语言day04-11自定义构造方法

pragma mark 自定义构造方法

pragma mark 概念

/*
 自定义构造方法:
 其实就是自定义一个init方法
 1. 一定是对象方法
 2. 一定返回id/instancetype
 3. 方法名称 一定以init开头

 // 一个类可以有0个 或者 多个自定义构造方法
 - (instancetype)initWithAge:(int)age;
 - (instancetype)initWithName:(NSString *)name;

 // 自定义构造方法 可以有1个或多个参数
 - (instancetype)initWithAge:(int)age andName:(NSString *)name;

 */

pragma mark 代码

#import 
#pragma mark 类
#import "Person.h"

#pragma mark main函数
int main(int argc, const char * argv[])
{
//    Person *p = [Person new];
//    Person *p = [[Person alloc]init];
//    p.age = 20;
    
//    Person *p = [[Person alloc]initWithAge:20];
//    Person *p = [[Person alloc]initWithName:@"lyh"];
    Person *p = [[Person alloc]initWithAge:20 andName:@"lyh"];
    NSLog(@"%@",p);
    
//    Person *p2 = [Person new];
//    Person *p2 = [[Person alloc]init];
//    p2.age = 30;
//    Person *p2 = [[Person alloc]initWithAge:30];
//    Person *p2 = [[Person alloc]initWithName:@"lys"];
    Person *p2 = [[Person alloc]initWithAge:30 andName:@"lys"];

    NSLog(@"%@",p2);
    return 0;
}
Person.h //人类
#import 

@interface Person : NSObject

@property int age;
@property NSString *name;
/*
 自定义构造方法:
 其实就是自定义一个init方法
 1. 一定是对象方法
 2. 一定返回id/instancetype
 3. 方法名称 一定以init开头
 */
#warning 自定义构造方法
- (instancetype)initWithAge:(int)age;

// 一个类可以有0个 或者 多个自定义构造方法
- (instancetype)initWithName:(NSString *)name;

// 自定义构造方法 可以有1个或多个参数
- (instancetype)initWithAge:(int)age andName:(NSString *)name;

@end
Person.m
#import "Person.h"

@implementation Person

- (instancetype)init
{
    if (self = [super init]) {
        _age = 5;
    }
    return self;
}
#warning 自定义构造方法
- (instancetype)initWithAge:(int)age
{
    if (self = [super init]) {
        _age = age;
    }
    return self;
}

- (instancetype)initWithName:(NSString *)name
{
    if (self = [super init]) {
        _name = name;
    }
    return self;
}
- (instancetype)initWithAge:(int)age andName:(NSString *)name
{
    if (self = [super init]) {
        _age = age;
        _name = name;
    }
    return self;
}
#warning 重写(description)描述方法
- (NSString *)description
{
    return [NSString stringWithFormat:@"age = %i, name = %@",_age,_name];
}
@end

你可能感兴趣的:(OC语言day04-11自定义构造方法)