1 #import <Foundation/Foundation.h>
2 // 需求:每个Person对象一创建出来,他得_age都是10
3 4 @interface Person : NSObject
5 @property
int age;
6 @end
7 8 @implementation Person
9 10 // override
11 - (id)init
12 {
13 14 if (self = [super init]) {
15 16 _age = 10;
17 }
18 return self;
19 20 }
21 @end
22 23 24 25 @interface Student : Person
26 @property
int no;
27 @end
28 29 @implementation Student
30 31 - (id)init
32 {
33 34 if (self = [super init])
35 {
36 _no = 1;
37 }
38 return self;
39 }
40 @end
41 42 int main()
43 {
44 45 Student * s= [[Student alloc] init];
46 NSLog(@"no = %d, age = %d", s.no, s.age);
47 48 }
49 50 /*
51
52 A.重写构造方法的目的:为了让对象创建出来,成员变量就会有一些固定的值。
53
54 B.调用父类构造方法的原因:
55 1.一定要调用super的init方法,初始化父类中的成员变量和属性。(初始化的其实是当前对象,只是当前对象有很多成员变量是从父类那继承过来的。)
56
57 C.重写构造方法的注意点:
58 1.先调用父类构造方法。(优先调用super的init的方法,因为本质就是初始化当前对象的父类成员变量和属性,所以返回的是当前对象。)
59 2.再进行子类内部成员变量的初始化
60 3.总体框架
61 - (id)init
62 {
63 if (self = [super init])
64 {
65
66 }
67 return self;
68 }
69
70 */