不多说 先上代码:
一。初始化方法
在Teacher.h 文件中先定义
-(id)init;
-(id)init:(NSString *)name;
然后在Teacher.m文件中实现:
-(id)init{ //无参数的初始化方法
if(self=[super init]){ //优先调用父类的 初始化方法
}
return self;
}
-(id)initWithName:(NSString *)name{ //一个参数的初始化方法
if(self=[super init]){
_name=name;
}
return self;
}
我理解的初始化方法就类似于java中的构造方法,在这里 第一个init方法 我认为是重写了父类的init方法
然后初始化一个没有参数的类
第二个初始化方法是带了一个参数,然后把这个参数传给对象,即把名字这个形参传给实例变量
其实初始化方法可以任意定义,它就是要我们在第一次初始化对象的时候调用的,可以按照自己的需求自定义
特点:1.是对象的方法以‘-’ 开头
2.返回值类型一般式id (id代表任意类型)
3.一般定义名字的时候是以init开头
4.可以带0个或者是多个参数
5.优先执行父类的初始化方法,然后再给本身赋值,返回self(self只本类,super 调用父类的属性或方法的关键字)
(补充:定义变量或者方法的时候,一般采用驼峰命名法,要求见名知意,比如:initWithName 解释就是:初始化 带着一个名字)
6.在对象 的生命周期只声明一次
二 、便利构造器
直接上代码:
在Teacer.h里添加定义
+(id)teacherWithName:(NSString *)name;
在Teacher.m里添加实现
+(id)teacherWithName:(NSString *)name{
Teacher *t=[[Teacher alloc]initWithName:name];
return t;
}
ps: “-”和“+”修饰的方法的异同: “-”方法是实例方法,只有实例化 的对象可以调用
“+”方法是类方法,无需实例化,直接用类名就可以直接访问
(个人感觉有点像java里边 用Static修饰的方法,可以用类名直接访问,印象最深的就是自己在大学期间做jdbc的时候,把链接数据库的代码封装成了静态类和静态方法,这样做了封装方便调用)
便利构造器封装了对象的创建过程,进一步简化了对象创建的步骤