iOS Developer

OC中的初始化方法

2016-04-06  本文已影响497人  大侠走一波

要讲初始化方法,先来一点面向对象语言中继承的概念:

继承的概念 :继承父类的所有的实例变量和方法,比如:小学生类 -> 学生类->人类

    所以当我们新写的一个类继承自一个原有的类的时候,我们也就继承了原有类的实例变量,所以 只写新类特有的实例变量。例如:人类中有一个『姓名』的实例变量,所以学生类中就可以不用写『姓名』这个实例变量,直接写特有的 例如『语文成绩』等。

继承具有传递性  小学生类 -> 学生类->人类,obviously

在子类中,进行父类方法的重载, 声明可以不用写,直接在.m文件中修改

一个类中普通方法的执行顺序:  

先从本类查找对应方法,如果本类有,则执行本类方法,不再继续查找,如果本类没有,则往父类查找,直到找到,不再继续查找,执行对应方法。

初始化方法:特有的关键字init

所谓初始化方法,就是我们要新得到一个类的一个对象,在OC中使用会有这样的形式

    [Person alloc] init] , alloc 在内存中开辟一块空间,init初始化 .即就是alloc相当于买地皮,init相当于盖房子

初始化方法从上往下(从父类开始)

使用super关键字 super代表一个本类对象调用父类方法

[super method]; 调用父类方法

self关键字在减号(实例)方法代表本类的一个对象

-(instancetype)init{

//初始化父类

self = [super init];

//对父类结果进行判断,如果初始化成功,则继续初始化本类特有实例

if (self) {

//初始化本类实例变量

_grade = @"";

}

return self;

}

指定初始化方法

初始化所有的实例变量,即就是让你的对象创建好的时候就具有一些基本的属性

-(instancetype)initWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height sex:(NSString *)sex;

便利构造器 alloc init步骤的一步到位

返回值最好采用instancetype ,返回你对应类型的对象

+(instancetype)personWithName:(NSString *)name age:(NSInteger)age height:(CGFloat)height sex:(NSString *)sex{

Person *person = [[Person alloc]initWithName:name age:age height:height sex:sex];

return person;

}

打印对象的所有实例变量 重写description 方法()

有时候我们需要打印特定的格式信息出来,例如 姓名= "小明",年龄= 23,电话 = 10086 ,要打印出这样的格式,我们就得重写这个方法。此方法是从所有类的父类NSObject 类中继承而来的

一次性的打印该对象的所有实例变量

-(NSString *)description{

NSString *str = [NSString stringWithFormat:@"name = %@,age = %ld,height = %.2f,sex = %@,school = %@,score = %.2f",_name,_age,_height,_sex,_school,_score];

return str;

}

上一篇 下一篇

猜你喜欢

热点阅读