#import <Foundation/Foundation.h>
#import "Person.h"
#import "Student.h"
// 构造方法:用来初始化对象的方法,是个对象方法,-开头
// 重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值
/*
重写构造方法的注意点
1.先调用父类的构造方法([super init])
2.再进行子类内部成员变量的初始化
*/
int main()
{
// Person *p = [Person new];
/*
完整地创建一个可用的对象
1.分配存储空间 +alloc
2.初始化 -init
*/
// 1.调用+alloc分配存储空间
// Person *p1 = [Person alloc];
// 2.调用-init进行初始化
// Person *p2 = [p1 init];
// // 调用-init进行初始化
// Person *p3 = [Person new];
//
//
// // 每个Person对象创建出来,他的_age都是10
//
Person *p4 = [[Person alloc] init];
Student *stu = [[Student alloc] init];
NSLog(@"------");
return 0;
}
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property int age;
@end
#import "Person.h"
@implementation Person
// 重写-init方法
//- (id)init
//{
// // 1.一定要调用回super的init方法:初始化父类中声明的一些成员变量和其他属性
// self = [super init]; // 当前对象 self
//
//
// // 2.如果对象初始化成功,才有必要进行接下来的初始化
// if (self != nil)
// { // 初始化成功
// _age = 10;
// }
//
// // 3.返回一个已经初始化完毕的对象
// return self;
//}
- (id)init
{
if ( self = [super init] )
{ // 初始化成功
_age = 10;
}
// 3.返回一个已经初始化完毕的对象
return self;
}
@end
#import "Person.h"
@interface Student : Person
@property int no;
@end
#import "Student.h"
@implementation Student
// 学生对象初始化完毕后,年龄就是10,学号就是1
- (id)init
{
if ( self = [super init] )
{
_no = 1;
}
return self;
}
@end