黑马程序员-------OC----构造方法和description方法
来源:互联网 发布:base t以太网端口 编辑:程序博客网 时间:2024/05/16 11:42
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
构造方法
完整的创建一个可用的对象:Person *p=[Person new];
New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法来分配存储空间(返回分配的对象);2)使用init方法来对对象进行初始化。
可以把new方法拆开如下:
1.调用类方法+alloc分配存储空间,返回未经初始化的对象
Person *p1=[person alloc];
2.调用对象方法-init进行初始化,返回对象本身
Person *p2=[p1 init];
3.以上两个过程整合为一句:
Person *p=[[Person alloc] init];
说明:init方法就是构造方法,是用来初始化对象的方法,注意这是一个对象方法,一减号开头。默认初始化完毕后,所有成员变量的值都为0。
如果我需要让每个对象创建出来的初始值是10,而不是1,这时候就需要重写构造方法
#import "Person.h"@implementation Person-(id)init{ if(self = [super init]){ _age = 10; } return self;}@end
造方法使用注意
子类拥有的成员变量包括自己的成员变量以及从父类继承而来的成员变量,在重写构造方法的时候应该首先对从父类继承而来的成员变量先进行初始化。
原则:先初始化父类的,再初始化子类的。
重写构造方法的目的:为了让对象方法一创建出来,成员变量就会有一些固定的值。
注意点:
先调用父类的构造方法[super init];
再进行子类内部成员变量的初始化。
自定义构造方法
自定义构造方法的规范
(1)一定是对象方法,以减号开头
(2)返回值一般是id类型
(3)方法名一般以initWith开头
-(id)initWithAge:(int)age andName:(NSString *)name{ if(self = [super init]){ _age = age; _name = name; } return self;}
在main函数中:
自定义构造方法的使用注意:
自己做自己的事情
父类的方法交给父类的方法来处理,子类的方法处理子类自己独有的属性
description方法
description方法:当使用%@打印一个对象的时候,会调用这个方法
重写父类的description方法
在Person.m文件中,重写description方法:
-(NSString *)description{ NSString *str = [NSString stringWithFormat:@"name %@ and age is %d",_name,_age]; return str;}
在main.m的main函数中测试:
- 黑马程序员-OC-自定义构造方法和description方法
- 黑马程序员-------OC----构造方法和description方法
- 黑马程序员-OC-description方法
- 13、黑马程序员-OC语言description方法和sel
- 黑马程序员--OC--分类和重新定义description方法
- oc中的构造方法和description方法
- 黑马程序员-OC-构造方法
- 黑马程序员---OC构造方法
- [黑马程序员][OC]构造方法
- 黑马程序员——OC基础---核心语法(id,构造方法,Category,description,SEL)
- 黑马程序员_iOS开发之OC之面向对象之id语法、构造方法、@category分类、类本质、description方法和SEL数据类型
- OC学习那点事:构造方法和description方法
- OC学习2——构造方法和description方法
- OC学习:重写构造方法和description方法
- 黑马程序员——OC语言------id和构造方法
- 黑马程序员——OC—构造方法和Category
- 黑马程序员--学习OC@property和构造方法
- 黑马程序员——Objective-C——构造方法和description方法
- leetcode | Partition List
- 【FPGA】时钟分频设计
- 中国智慧VS西方智慧-看中国IT风云
- 海量数据处理问题
- 欢迎使用CSDN-markdown编辑器
- 黑马程序员-------OC----构造方法和description方法
- unit thought-about to be Fifa 16 ps4 coins
- 二维数组的指针复习
- 窗体上的lblel渐变效果用timer控制
- 串口扫描头设置
- 部署在 Tomcat 下推荐方法
- Windows I/O模型之一:Select模型
- c++ for_each 实现原理英文原版转载( Conditional Love: FOREACH Redux)
- EasyMock异常“java.lang.IllegalStateException: 1 matchers expected, 3 recorded”的奇葩原因