main.m文件:
int main(int argc,const char * argv[])
{
@autoreleasepool {
int i =0;//初始化
int i2 =10;
/*
id obj = [Student alloc];
Student* stu = (Student*)obj;
stu = [stu init];
*/
//创建Student的对象并且初始化
Student* stu2 = [[Studentalloc]init];
NSLog(@"stu2 age:%d sex:%c\n",
stu2.age,stu2.sex);
Student* stu3 = [[Studentalloc]initWithAge:18andSex:'M'];
NSLog(@"stu3 age:%d sex:%c\n",
stu3.age,stu3.sex);
}
return0;
}
Student.h文件:
#import <Foundation/Foundation.h>
@interface Student : NSObject
@property int age;
@property char sex;
//自定义初始化方法
-(id)init;//无参的初始化方法是不需要初始化属性的
//有参的初始化方法需要初始化属性的
-(id)initWithAge:(int)age andSex:(char)sex;
@end
Student.m文件:
#import "Student.h"
@implementation Student
-(id)initWithAge:(int)age andSex:(char)sex{
if (self = [superinit]) {
//给属性赋值初始值
_age = age;
//_sex = sex;//直接给实例变量赋值
self.sex = sex;//先把值给属性->实例变量
}
returnself;
}
-(id)init{
/*
//super父类
id obj = [super init];
//非空验证 NULL在C语言中描述空 nil在OC中描述空
if (obj!=nil) {
//操作属性给属性赋值
}
*/
//self当前对象自己
if (self = [superinit]){
//操作属性给属性赋值
}
returnself;
}
@end