【Objective-C学习笔记】核心语法——构造方法
来源:互联网 发布:java生成二维码图片 编辑:程序博客网 时间:2024/05/16 10:06
一、构造方法
1、专门用来初始化对象的方法,是对象方法,以 - 开头。
2、构造方法的作用:对象创建成功之后,实例变量会有一定的值。
二、创建对象
1、Person *p = [Person new];2、完整的创建方法
(1)调用+alloc方法返回一个分配好存储空间的对象(Person类型的新对象)。
Person *p1 = [Person alloc];(2)对象调用-init方法进行初始化。
Person *p2 = [p1 init];(3)根据以上可以写为:
Person p = [[Person alloc] init];三、重写构造方法
1、固定写法
@interface Person : NSObject@property int age;@end@implementation Person// 固定写法- (id)init{ if (self = [super init]) { _age = 10; //初始化年龄为10岁 } return self;}@end(1)[super init]:初始化Person对象,需要先把父类中的实例变量进行初始化,父类为NSObject,把isa初始化为当前类,也就是Person类。
(2)_age = 10;:把继承自父类的实例变量初始化成功后,再对Person对象中的实例变量进行初始化。
(3)return self:返回一个已经初始化完毕的对象。
2、使用注意
(1)先初始化父类中的实例变量,再初始化子类中的实例变量
(2)如果父类中的实例变量初始化失败,那么也不用对子类中的实例变量进行初始化
四、自定义构造方法
四、自定义构造方法
1、不带参数:创建一个叫名字是jack的对象
#import <Foundation/Foundation.h>@interface Person : NSObject@property NSString *name;@end@implementation Person- (id)init{ if (self = [super init]) { _name = @"jack"; } return self;}@endint main(){ Person *p = [[Person alloc] init]; NSLog(@"名字是%@", p.name); // 名字是jack return 0;}2、带参数:创建一个名字是jack,年龄25的对象
#import <Foundation/Foundation.h>@interface Person : NSObject@property NSString *name;@property int age;- (id)initWithName:(NSString *)name andAge:(int)age;@end@implementation Person-(id)initWithName:(NSString *)name andAge:(int)age{ //对父类中的实例变量进行初始化 if (self = [super init]) { //初始化子类实例变量 _name = name; _age = age; } return self;}@endint main(){ Person *p = [[Person alloc] initWithName:@"jack" andAge:25]; NSLog(@"name=%@, age=%d", p.name, p.age); //name=jack, age=25 return 0;}学生继承自人类,创建一个名字叫jim,年龄18,学号1的对象
@interface Student : Person@property int no;- (id)initWithName:(NSString *)name andAge:(int)age andNo:(int)no;@end@implementation Student- (id)initWithName:(NSString *)name andAge:(int)age andNo:(int)no{ // 将name、age传递到父类方法中进行初始化 if ( self = [super initWithName:name andAge:age] ) { _no = no; } return self;}@endint main(){ Student *stu = [[Student alloc] initWithName:@"jim" andAge:18 andNo:1]; NSLog(@"name=%@, age=%d, no=%d", stu.name, stu.age, stu.no); //name=jim, age=18, no=1 return 0;}3、使用技巧
父类的属性交给父类方法去处理,子类的方法处理子类的属性
4、 自定义构造方法的规范
(1)一定是对象方法,一定以 - 开头
(2)返回值一般是id类型
(3)方法名一般以initWith开头
(1)一定是对象方法,一定以 - 开头
(2)返回值一般是id类型
(3)方法名一般以initWith开头
0 0
- 【Objective-C学习笔记】核心语法——构造方法
- Objective-C基础——核心语法-构造方法
- 【Objective-C学习笔记】核心语法——分类-Gategory
- 【Objective-C学习笔记】核心语法——类的本质、description方法
- 【Objective-C学习笔记】核心语法——点语法、id类型、SEL类型
- 【Objective-C学习笔记】核心语法——实例变量作用域、关键字@property和@synthesize
- 《Objective-C程序设计》学习笔记——语法篇
- Objective-C 语法学习笔记
- Objective-C 语法学习笔记
- 黑马程序员----Objective-C学习笔记之构造方法
- 黑马程序员—Objective-C学习—NSSting和核心语法
- 黑马程序员——Objective-C——核心语法
- Objective-C基础——核心语法-@property 和@synthesize
- Objective-C基础-——核心语法-description和sel
- 【黑马程序员】Objective-C语言学习笔记之核心语法(四)
- iOS开发核心语言Objective C —— 面向对象思维、setter和getter方法及点语法
- Objective-C 语法学习笔记1
- 【zz】C++开发者快速学习Objective-C语言核心语法
- 树莓派2 安装ARCH LINUX ARM系统后I2C和SPI的配置
- 14. PHP Array数组(2)
- Bestcoder #36 hash
- hdu5200 Trees
- 乌龟棋
- 【Objective-C学习笔记】核心语法——构造方法
- 设计模式--装饰模式
- 数据挖掘中所需的概率论与数理统计知识
- hdu 5199 (二分||Hash||map)
- 15. PHP Object 对象
- struts2拦截器配置,strus2.xml简单配置
- Android---Service详解(一)
- Spring框架中的aop
- Android广播的学习