03 继承 初始化方法 便利构造器
来源:互联网 发布:聚翔网络 编辑:程序博客网 时间:2024/05/01 07:25
一 继承
1)简述
继承的上层: 父类,继承的下层:子类;
继承是单向的,不能相互继承;
继承具有传递性:A继承与B,B继承与C,A具有B和C的特征和行为;
子类能继承父类全部的特征和行为;
2)继承的实现
@interface Student :Person//学生继承Person
{
NSString *_className;
CGFloat _height;//身高
}
3)继承的特点OC中只允许单继承;
没有父类的类称为根类,OC中的根类是NSObject(祖宗);
继承的内容:所有实例变量和方法;
如果子类不满意父类的方法的实现, 可以重写父类的方法
4)继承中方法的执行
二 初始化方法
1)简述
学习继承之前,初始化方法,没有self = [ super init]字样,我们为实例变量逐一赋值;
学习继承之后,父类中声明了公共的实例变量,作为父类,也应该有自己的初始化方法,
为这些公共实例变量赋初值;
创建对象分两步:开辟空间,初始化;
初始化方法的主要作用是:为某些实例变量赋初值
初始化方法在对象的整个生命周期里只使用一次
初始化方法中,优先向super发送init开头的消息(初始化公共变量),初始化成功后再初始化自身特有变量,从而完成全部实例变量的初始化
self = [super initWith: name score:score]; //super 表示父类继承过来的方法 , self 表示自己的方法
2)初始化方法特征
- (instancetype)initWithName:(NSString *)name;
1)是" - "(对象)方法
2)类型的返回值 id 或 instancetype类型的返回值
3)方法名(init…)以init开头;
4)可以带0~n个参数
5)内部实现:先执行super的初始化方法,再初始化自身变量,return self
这里super
super是编译器指令,并非对象;
作用:给super发消息,可以执行父类中实现的方法;
直接调用父类中的某个方法;
super处在对象方法中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法
使用场景:子类重写父类的方法时,想保留父类的一些行为
子类可以重写父类的方法,即:子类既有自己的实现,又有父类继承下来的实现,
如果想使用父类的实现,向super发送消息;
//实现自定义初始化方法
- (instancetype)initWithName:(NSString *)name
score:(CGFloat)score
className:(NSString *)className
height:(CGFloat)height
{
//1.先去使用去父类继承过来的方法
self = [superinitWith: namescore:score];//super表示父类继承过来的方法 , self表示自己的方法
//2.判断初始化是否成功,成功后在初始化自己的实例变量
if (self) {//判断是否存在 if(self !=nil)
_className = className;
_height = height;
}
//3.返回
return self;
}
三 便利构造器
1)简述
便利构造器在初始化的基础上前进一小步,封装了对象创造;
变量构造器是" + "(类)方法,返回本类型的实例,方法名以类名开头person…;
可以带0~n个参数;
内部实现:封装了allco和初始化方法,使用起来更加简洁
2)实现
1)声明和实现便利构造器
+ (instancetype)personWithName:(NSString *)name
score:(CGFloat)score
+ (instancetype)personWithName:(NSString *)name score:(CGFloat)score
{
Person *person = [[Personalloc]initWith:namescore:score];
return person;
}
2)使用便利构造器创建对象
//创建一个 Person 类型的对象
Person *per = [[Personalloc]initWith:@"
- 03 继承 初始化方法 便利构造器
- 【继承】指定初始化方法【便利构造器】
- 继承 初始化方法 便利构造器
- OCday3 初始化方法, 便利构造器, 继承
- OC_继承,便利构造器,初始化方法
- OC_继承,便利构造器,初始化方法
- OC_继承,便利构造器,初始化方法
- OC_继承,便利构造器,初始化方法
- OC_继承,便利构造器,初始化方法
- day3: 继承、初始化方法、便利构造器
- 继承 初始化方法 便利构造器
- [TwistedFate]继承 初始化方法 便利构造器
- 继承、初始化方法、便利构造器
- OC之继承,初始化方法,便利构造器
- OC_03_初始化方法_便利构造器_继承
- OC基础:继承.初始化方法,便利构造器
- OC-继承-初始化方法-便利构造器(练习题-打僵尸)
- OC学习-继承,便利构造器,初始化方法
- hdu 4893——Wow! Such Sequence!
- sql
- UML之基础理解篇
- Lua中的table函数库
- viewpager和两种adaper使用
- 03 继承 初始化方法 便利构造器
- POJ1274匈牙利算法DFS实现
- poj 2516 最小费用最大流
- C# 关于控件的z-order(Z轴次序)属性(By dlm)
- Lua中的操作系统库
- 操作系统实验2-互斥与同步
- 犀牛——第19章 JQuery类库 19.4使用jQuery处理事件
- Socket笔记
- 使用别人webService简介