黑马程序员_OC构造方法
2014-04-13 21:44
211 查看
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
构造方法:用来初始化对象的方法,是个对象方法,以’-‘开头,默认的构造方法,也就是init方法,它是不接收任何参数的。
Person类:
2.调用-init进行初始化;
3.每个Person对象创建出来,他的_age都是10;
重写构造方法的注意点
1.先调用父类的构造方法([super init])来初始化父类中声明的一些成员变量和其他属性;
2.如果对象初始化成功,再进行子类内部成员变量的初始化;
3.最后返回一个已经初始化完毕的对象;
Person类(自定义构造方法):
在第1行调用了构造方法initWithAge:,并传入20作为参数,因此Person对象的成员变量_age会变为20;
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
构造方法:用来初始化对象的方法,是个对象方法,以’-‘开头,默认的构造方法,也就是init方法,它是不接收任何参数的。
一、重写构造方法:为了让对象创建出来,成员变量就会有一些固定的值,一般都会重写构造方法。
代码示例:Person类:
#import <Foundation/Foundation.h> @interface Person : NSObject @property int age; @end @implementation Person - (id)init { if ( self = [super init] ) { _age = 10; } return self; } @end完整创建一个Person对象:
Person *p = [[p alloc] init]; NSLog(@"age is %i", p.age); [p release];1.调用+alloc分配存储空间;
2.调用-init进行初始化;
3.每个Person对象创建出来,他的_age都是10;
重写构造方法的注意点
1.先调用父类的构造方法([super init])来初始化父类中声明的一些成员变量和其他属性;
2.如果对象初始化成功,再进行子类内部成员变量的初始化;
3.最后返回一个已经初始化完毕的对象;
二、自定义构造方法:默认的构造方法,也就是init方法,它是不接收任何参数的。因此,在实际开发中,为了方便,会经常自定义构造方法。构造方法的方法名一般都会以init开头,返回值跟init方法一样为id类型,id可以代表任何OC对象。
接下来,自定义一个构造方法,可以传入一个age参数来初始化Person对象Person类(自定义构造方法):
#import <Foundation/Foundation.h> @interface Person : NSObject @property int age; @end @implementation Person - (id)init { if ( self = [super init] ) { _age = 10; } return self; } - (id)initWithAge:(int)age { if ( self = [super init] ) { _age = age; } return self; } @end调用自定义构造方法:
Person *p = [[p alloc] initWithAge:20]; NSLog(@"age is %i", p.age); [p release];
在第1行调用了构造方法initWithAge:,并传入20作为参数,因此Person对象的成员变量_age会变为20;
----------------------
ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员--C#基础总结(二)
- 黑马程序员-线程范围内数据共享
- 黑马程序员——多线程知识总结
- 黑马程序员-----java集合类
- 黑马程序员【深入理解BufferedInputStream实现原理】
- 黑马程序员-OC的面向对象
- 黑马程序员_Java(list子类,泛型,
- “黑马程序员”HashSet
- 黑马程序员-------网络编程
- 黑马程序员—注入漏洞攻击
- 黑马程序员——Java高新技术(3)
- 黑马程序员学习笔记——Math类
- 黑马程序员学习日记 (三)面向对象
- 黑马程序员-Foundation的使用
- 黑马程序员----内存管理
- 黑马程序员----内部类
- 黑马程序员_逻辑与和逻辑或的短路问题:
- 黑马程序员_day06_二维数组和面向对象
- 黑马程序员——Java中HashSet中hashCode()的原理