您的位置:首页 > 其它

OC学习笔记 自定义构造方法扩展

2015-04-24 01:55 281 查看
将子类父类方法初始化

父类定义

#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

#import "Person.h"
#import "Student.h"

int main() {
Person *p = [[Person alloc]initWithAge:@"大杰加油 上海我来了" andAge:28 ];
NSLog(@"%@%d",p.name,p.age);
Student *stu = [[Student alloc]initWithNo:@"一刻都不敢听曲,一刻都不敢看声色犬马,一刻都不停止努力" andAge:28 andNo:2015.0424 ];
NSLog(@"%@%d%.4f",stu.name,stu.age,stu.no);
return 0;
}


打印输出:

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 方法 设计原则就是用来初始化成员变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: