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

本文通过具体的Objective-C代码示例,介绍了如何实现教师类的面向对象编程,包括类的声明、初始化方法、便利构造器的使用及对象的创建与方法调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

main.m

#import <Foundation/Foundation.h>  
#import "Teacher.h"  
  
int main(int argc, const charchar * 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 ;  
@end

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  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值