本帖最后由 wangchao1992 于 2015-8-19 15:02 编辑
构造方法:用来初始化对象的方法,是个对象方法 , - 开头
重写构造方法的目的: 为了让对象创建出来,成员变量就会有一些固定的值。
Person *p = [Person new];
创建一个实例对象, new方法做了三件事情。
1、使用alloc申请空间
2、使用init初始化
3、返回对象的首地址
注意:[Person new]; == [[Person alloc] init];
[Person alloc] 的时候,内存已经被清0
init是对象方法,该方法返回一个对象,
重写构造方法示例
Student类继承了 Person
#import "Person.h"
@interface Student : Person
{
@public
int _sno;
}
@end
#import "Student.h"
Student 的实现
@implementation Student
-(instancetype)init{
//1、初始化父类
//2、判断是否初始化成功
if(self = [super init]){
_sno = 1;
//3、初始化当前类的实例变量
}
//4、return self;
return self;
}
@end
自定义构造方法
书写规范
(1)一定是对象方法,以减号开头
(2)返回值一般是id类型
(3)方法名一般以initWith开头
自定义和其他方法一样,实现之前必须在 .h 文件中声明。
Student继承自 Person类
Student比Person多个实例变量 _sno
@implementation Student
//Student自定义构造方法实现
-(instancetype)initWithName:(NSString *)name andAge:(int)age andSNO:(int)sno{
if (self = [super initWithName:name andAge:age]) {
//初始化学号
_sno = sno;
}
return self;
}
@end
创建学生的对象
Student *stu = [[Student alloc] initWithName:@"张无忌" andAge:38 andSNO:438];
Person类 有两个实例变量 _name 和 _age
@implementation Person
//Person的自定义构造方法实现
-(instancetype)initWithName:(NSString *)name andAge:(int)age{
if (self = [super init]) {
_name = name;
_age = age;
}
return self;
}
@end
创建人的对象
Person *p1 = [[Person alloc] initWithName:@"张三丰" andAge:19];
|
|