------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
构造方法 init
/*
对实例变量进行初始化
*/
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@end
@implementation Person
//重写构造方法
- (instancetype)init
{
//1> 让父类先进行初始化
self = [super init]; //调用了NSObject得init方法
//根据self的返回值,判断是否初始化成功
//防止父类relase掉self指向的空间
//2> 判断父类是否初始化成功
if(self != NULL){
_age = 10;
}
//返回当前对象的地址
return self;
}
@end
@interface Student : Person
@property int sno;
@end
@implementation Student
//重写构造方法
- (instancetype)init
{
//如果父类初试化成功
//父类初试化后的值 age = 10 , 被继承到子类中
if(self = [super init]){
_sno = 1;
}
//返回self
return self;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//alloc以后,值已经变成了0 Xcode内部做了优化
Person *p = [[Person alloc] init];
Student * stu = [[Student alloc] init];
//Person类的重写初始化
NSLog(@"p.age = %d",p.age);
//Student类的重写初始化
NSLog(@"stu.age = %d,stu.sno = %d",stu.age,stu.sno);
}
return 0;
}