将子类父类方法初始化
父类定义
#import <Foundation/Foundation.h> @interface Person :NSObject @property NSString *name; @property int age; - (id)initWithAge :(NSString *)name andAge:(int) age; @end
父类实现
#import "Person.h" @implementation Person : NSObject - (id)initWithAge:(NSString *)name andAge:(int)age { if(self = [super init]) { _name = name; _age = age; } return self; } @end
子类定义
#import "Person.h" @interface Student :Person @property double no; - (id)initWithNo :(NSString *)name andAge :(int)age andNo :(double)no; @end
子类实现
#import "Student.h" @implementation Student : Person // 父类的属性交给父类方法去处理,子类属性交给子类方法去处理 - (id)initWithNo:(NSString *)name andAge:(int)age andNo:(double)no { if(self = [super initWithAge:name andAge:age]) // 将继承父类属性age name传递到父类去初始化 { _no = no; // 只关注并返回子类自己独有属性 自己搞自己东西 } return self; } @end
main
1 #import "Person.h" 2 #import "Student.h" 3 4 int main() { 5 Person *p = [[Person alloc]initWithAge:@"大杰加油 上海我来了" andAge:28 ]; 6 NSLog(@"%@%d",p.name,p.age); 7 Student *stu = [[Student alloc]initWithNo:@"一刻都不敢听曲,一刻都不敢看声色犬马,一刻都不停止努力" andAge:28 andNo:2015.0424 ]; 8 NSLog(@"%@%d%.4f",stu.name,stu.age,stu.no); 9 return 0; 10 }
打印输出:
2015-04-24 10:32:09.402 构造函数[716:33731] 大杰加油 上海我来了28 2015-04-24 10:32:09.405 构造函数[716:33731] 一刻都不敢听曲,一刻都不敢看声色犬马,一刻都不停止努力282015.0424 Program ended with exit code: 0
总结
这样做好处就是 后期项目扩展 修改父类属性结构 子类不需要修改原有方法 便于扩展
init 方法 设计原则就是用来初始化成员变量。