Objective-c语言_便利初始化函数和便利构造器

便利初始化函数和便利构造器

mian.m

#import <Foundation/Foundation.h>
#import "Teacher.h"

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

        Teacher *teacher = [[Teacher alloc]init];
        
        [teacher sayWord];
        
        Teacher *teacher1 = [[Teacher alloc]init];
        [teacher1 sayWord];
        
        Teacher *teacher2 = [[Teacher alloc]initWithName:@"zengxinsheng" andAge:18];
        [teacher2 sayWord];
        
        Teacher *teacher3 = [Teacher teacherWithName:@"xuyu" andAge:18];
        [teacher3 sayWord];
        
        
    }
    return 0;
}
Teacher.h

#import <Foundation/Foundation.h>

@interface Teacher : NSObject
{
    NSString *_name ;
    NSInteger _age ;
}

-(void)sayWord ;

//便利初始化函数
//注意命名规范: init开头
-(id)initWithName:(NSString *)name
           andAge:(NSInteger)age;

/*
 便利构造器(类方法)
 便利构造器只不过是把对象分配内存 和 便利初始化函数 初始化对象的代码封装起来,让用户使用起来更加方便
 注意命名规范:className 开头,例如teacher
 */

+(id)teacherWithName:(NSString *)name
              andAge:(NSInteger)age ;
Teacher.m

#import "Teacher.h"

@implementation Teacher

/*
 id:返回的类型是id数据类型,它是动态数据类型,它可以指向任何的对象,而不关心具体类型,在运行时检查其具体类型,可以对其发送任何(存在的)消息
 
 self :指向当前对象的指针
 
 super :指向父类对象的指针,子类使用super发送消息时,实际上就是告诉子类调用父类的方法。如果父类没有定义该方法,则会继续在继承链上寻找,直到寻找到位置,如果找NSObject位置依然没有找到,就会报错
 
 其中(self = [super init]),此处[super init]任然返回子类对象,此处的目的是为了初始化父类的实例变量,如果返回nil,表明父类没有alloc成功,即不能再alloc子类对象
 
 */

-(id)init
{
    if (self = [super init])
    {
        _name = @"Rick";
        _age = 25;
    }
    return self;
}

-(id)initWithName:(NSString *)name andAge:(NSInteger)age
{
    if (self = [super init])
    {
        _name = name;
        _age = age;
    }
    return self;
}

//便利构造器

+(id)teacherWithName:(NSString *)name andAge:(NSInteger)age
{
    Teacher *teacher = [[Teacher alloc]initWithName:name andAge:age];
    return teacher;
}



-(void)sayWord
{
    NSLog(@"Teacher who names %@,%ld years old, say hello guys",_name,_age);
}

@end




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值