OC-oc语言里的构造方法
一)构造方法的调用
说明:init方法就是构造方法,是用来初始化对象的方法,注意这是一个对象方法,一减号开头。默认初始化完毕后,所有成员变量的值都为0。
(二)构造方法使用注意
(1)子类拥有的成员变量包括自己的成员变量以及从父类继承而来的成员变量,在重写构造方法的时候应该首先对从父类继承而来的成员变量先进行初始化。
(2)原则:先初始化父类的,再初始化子类的。
(3)重写构造方法的目的:为了让对象方法一创建出来,成员变量就会有一些固定的值。
(4)注意点:#1先调用父类的构造方法[super init]; #2再进行子类内部成员变量的初始化。
二、自定义构造方法
(一)自定义构造方法的规范
(1)一定是对象方法,以减号开头
(2)返回值一般是id类型
(3)方法名一般以initWith开头
-(id)initWith:(NSString *name){
if(self==[super init])
{
_name=name;
}
return self;
}
(二)自定义构造方法的使用注意
(1)自己做自己的事情
(2)父类的方法交给父类的方法来处理,子类的方法处理子类自己独有的属性
/*
实现构造方法 Person
*/
-(id)initWithAge:(int)age andHeight:(int)hegith{
/*
1。先调用super的构造方法
*/
// 防止init方法错误,如果self不为空,
if(self=[super init]){
_age=age;
_height=hegith;
/*
可以使用点语法。 不会造成死循环。
self.age=age;
self.height=height;
*/
}
return self;
}
--------------------------补充一点--------------
/*
实现构造方法 Student--Person的子类
*/
-(id)initWithAge:(int)age andName:(NSString *)name{
/*
1。先调用super的构造方法
*/
// 防止init方法错误,如果self不为空,
if(self=[super initWithAnge:andHeight:]){
_age=age;
_name=name;
/*
可以使用点语法。 不会造成死循环。
self.age=age;
self.name=name;
*/
}
return self;
}