[Object-C]OC实例变量初始化方法
来源:互联网 发布:知乐胶囊为什么这么贵 编辑:程序博客网 时间:2024/05/25 12:22
OC实例变量初始化方法
1 使用实例setter方法 默认初始化方法 + setName:xxx setAge:xxx
2 使用实例功能类方法,默认初始化方法 + setName:xxx age:xxx
3 使用实例初始化方法 initWith开头的方法
4 使用构造器 类名+With…
以Person Student两个类为例
1 使用实例 setter方法
这是最麻烦的方法
2 使用实例功能类方法赋值
简单于setter方法
3 使用实例初始化方法 initWith开头的方法
这是一种比较常用的方法
这种赋值方法有几点需要注意:
1) 自写初始化函数需要 以 initWith开头 必须形如 initWith…注意大小写
2 )一个类里可以有多个初始化方法,但是只能有一个“指定初始化”方法,指定初始化方法是在调用任意一个初始化方法的时候都会默认被调用的初始化方法,也就是说 指定初始化方法是在其它初始化方法里面被调用的,每一个初始化方法内部必须调用指定初始化方法,这不是规则,而是通用的原则。
如 上例做如下修改:
添加一个初始化方法:
h文件声明:
-(void)initWithStudentID:(NSString *)studentID score:(float)score;
m文件实现:
-(void)initWithStudentID:(NSString *)studentID score:(float)score
{
self = [self initWithName:NIL sex:NIL age:NIL studentID:studentID score: score
}
3 )注意继承的初始化的写法
4) self类似与其它语言的this指针,指向当前的对象,如果在方法里面类调用 就指代当前类,对象调用就指代当前对象
4 便利构造器方法
便利构造器书写规则
类方法 开头以类名开头类名首字母小写 后续驼峰法,属于类方法 用+号
如上例定义便利构造器
+(void)studentWithName:(NSString *)name sex:(NSString *)sex age:(int)age studentID:(NSString *)studentID score:(float)score
{
Student *stu = [[self alloc]studentWithName:name sex:sex age:age studentID:studentID score:score];
}
此时,创建对象的方法就变成了
int main
{
Student *stu = [Student studentWithName:@"xiaoA" sex:@"Man" age:16 studentID:@"2008-02" score:97]
return 0;
}
这种方法创建对象就很便捷了,因为无需每次手动申请空间,调用alloc函数。
一个初始化函数里面只能有一个super init类的方法,这样能保证多个入口一个出口,避免混乱。
1 使用实例setter方法 默认初始化方法 + setName:xxx setAge:xxx
2 使用实例功能类方法,默认初始化方法 + setName:xxx age:xxx
3 使用实例初始化方法 initWith开头的方法
4 使用构造器 类名+With…
以Person Student两个类为例
1 使用实例 setter方法
这是最麻烦的方法
@interface Person : NSObject{NSString *_name;NSString *_sex;int _age;}//setter方法-(void)setName:(NSString *)name;-(void)setSex:(NSString *)sex;-(void)setAge:(int)age;@end@implementation Person//setter方法-(void)setName:(NSString *)name{_name = name;}-(void)setSex:(NSString *)sex{_sex = sex;}-(void)setAge:(int)age{_age = age;}@end@interface Student : Person{NSString *_studentID;float _score;}//setter-(void)setStudentID:(NSString *)studentID;-(void)setScore:(float)score;@end@implementation Student : Person//setter-(void)setStudentID:(NSString *)studentID{_studentID = studentID;}-(void)setScore:(float)score{_score = score;}@endint main(){Student *stu = [[Student alloc]init];//开辟空间调用初始化方法//使用setter方法为实例变量赋值。[stu setName:@"xiaoA"];[stu setSex:@"Man"];[stu setAge:15];[stu setStudentID:@"2008-07"];[stu setScore:96];return 0;}
2 使用实例功能类方法赋值
简单于setter方法
@interface Person : NSObject{NSString *_name;NSString *_sex;int _age;}-(void)setName:(NSString *)name sex:(NSString *)sex age:(int)age;@end@implementation Person-(void)setName:(NSString *)name sex:(NSString *)sex age:(int)age{_name = name;_sex = sex;_age = age;}@end@interface Student : Person{NSString *_studentID;float _score;}-(void)setStudentID:(NSString *)studentID score:(float)score;@end@implementation Student : Person-(void)setStudentID:(NSString *)studentID score:(float)score{_studentID = studentID;_score = score;}@endint main(){Student *stu = [[Student alloc]init];//开辟空间调用初始化方法//使用setter方法为实例变量赋值。[stu setName:@"xiaoA" sex:@"Man" age:15];[stu setStudentID:@"2008-02" score:97];return 0;}
3 使用实例初始化方法 initWith开头的方法
这是一种比较常用的方法
@interface Person : NSObject{NSString *_name;NSString *_sex;int _age;}-(void)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age;@end@implementation Person-(void)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age{self = [super init];if(self){_name = name;_sex = sex;_age = age;}return self;}@end@interface Student : Person{NSString *_studentID;float _score;}-(void)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age studentID:(NSString *)studentID score:(float)score;@end@implementation Student : Person-(void)initWithName:(NSString *)name sex:(NSString *)sex age:(int)age studentID:(NSString *)studentID score:(float)score{self = [super initWithName:name sex:sex age:age];if(self){_studentID = studentID;_score = score;}return self;}@endint main(){Student *stu = [[Student alloc]initWithName:@"xiaoA" sex:@"Man" age:15 studentID:@"2008-2" score:97];//开辟空间调用初始化方法return 0;}
这种赋值方法有几点需要注意:
1) 自写初始化函数需要 以 initWith开头 必须形如 initWith…注意大小写
2 )一个类里可以有多个初始化方法,但是只能有一个“指定初始化”方法,指定初始化方法是在调用任意一个初始化方法的时候都会默认被调用的初始化方法,也就是说 指定初始化方法是在其它初始化方法里面被调用的,每一个初始化方法内部必须调用指定初始化方法,这不是规则,而是通用的原则。
如 上例做如下修改:
添加一个初始化方法:
h文件声明:
-(void)initWithStudentID:(NSString *)studentID score:(float)score;
m文件实现:
-(void)initWithStudentID:(NSString *)studentID score:(float)score
{
self = [self initWithName:NIL sex:NIL age:NIL studentID:studentID score: score
}
3 )注意继承的初始化的写法
4) self类似与其它语言的this指针,指向当前的对象,如果在方法里面类调用 就指代当前类,对象调用就指代当前对象
4 便利构造器方法
便利构造器书写规则
类方法 开头以类名开头类名首字母小写 后续驼峰法,属于类方法 用+号
如上例定义便利构造器
+(void)studentWithName:(NSString *)name sex:(NSString *)sex age:(int)age studentID:(NSString *)studentID score:(float)score
{
Student *stu = [[self alloc]studentWithName:name sex:sex age:age studentID:studentID score:score];
}
此时,创建对象的方法就变成了
int main
{
Student *stu = [Student studentWithName:@"xiaoA" sex:@"Man" age:16 studentID:@"2008-02" score:97]
return 0;
}
这种方法创建对象就很便捷了,因为无需每次手动申请空间,调用alloc函数。
一个初始化函数里面只能有一个super init类的方法,这样能保证多个入口一个出口,避免混乱。
- [Object-C]OC实例变量初始化方法
- [Object-C]OC实例变量初始化方法
- object-c 实例变量的可见度,方法
- OC中实例变量初始化方法,setter方法以及便利构造器的不同
- OC中实例变量可见度、setter、getter方法和自定义初始化方法
- OC之实例变量可见度和方法
- 黑马程序员 oc随记 关于实例变量初始化
- OC-初始化、实例方法、类方法、工厂方法
- Object-C 有私有变量?私有方法?
- OC实例变量可见度 setter方法和getter方法
- OC学习笔记(10)Object-C方法链表
- oc初始化方法
- OC基础---初始化方法
- oc面向对象—实例变量以及set get方法
- 2015.07.08 OC 第二天 实例变量 方法
- OC第二讲(InstanceVariableAndMethod实例变量和方法)
- (OC)基础第二讲:实例变量可见度、方法
- OBJECT-C 对象初始化
- JNI api
- 我的python积累
- python_pyopengl,pygame
- 修改数据库表中的数据mysql
- 黑马程序员_java基础
- [Object-C]OC实例变量初始化方法
- BOOST--学了很久的C++
- 专注
- 软件通信之HTTP通信协议
- The Ruby_Newbie Guide to Symbols
- 2013-05-19
- wine相关
- 获取年月日
- 黑马程序员 面向对象的分析与设计