OC之继承、初始化、便利构造器

原创 2015年11月19日 08:57:44


继承

继承特点:上层(冒号后面)是父类,下层(冒号前面)是子类
继承是单向的不能相互继承
继承具有传递性,A继承于B,B继承于C,A具有B和C的特征和行为
子类能继承父类的所有特征和行为
面向对象提供了继承语法,能够大大简化代码,把公共的方法和实例变量写在父类里,子类只需要写自己独有的方法和实例变量即可
继承既能保证类的完整性又能简化代码
OC中只允许单继承
没有父类的类称为根类,OC中的根类是NSObject(祖宗)
继承的内容:所有实例变量和方法
如果子类不满意父类的方法,可以重写(overwrite)父类的方法
继承中方法的执行
A:B B:C C:D:NSOject
A继承自B,B继承自C,C继承自D  
给A对象发送消息eat:
1.查找本类中是否实现或者重写eat方法
2.如果本类没有实现,就去上一级的父类去查找是否实现eat
3.逐级查找eat方法,,直到找到为止,如果最后一个类也没有实现eat方法,程序会崩溃
super是编译器指令,并非对象
作用:给super发消息可以执行父类中实现的方法
子类可以重写父类的方法,即子类可以既有自己的实现,又有父类继承下来的实现,如果想使用,向super发送消息即可
创建对象分为两步:开辟内存空间、初始化
初始化方法的作用:为某些实例变量赋初值
初始化方法在整个对象生命周期内只调用一次
完整的初始化方法:
- (void) init{
//给super发送init消息:即执行父类中的init方法
self = [super init];
if(self){
//子类自己的初始化设置
}
//初始化完成,返回对象本身
return self;
}
学习继承之前,初始化方法并没有self = [super init];字样。我们为实例变量逐一赋值
学习了继承之后,父类中声明了公共的实例变量。作为父类,也有自己的初始化方法,为这些事例变量进行赋值。
子类中定义了除了父类中的实例变量之外的实例变量
在自身初始化过程中,优先向super发送init方法。初始化公共变量。初始化成功后,再初始化自身特有变量,从而完成所有
实例变量的初始化
初始化过程:
1.自己的初始化方法中,优先调用父类的初始化方法。
2。父类的初始化方法中再调用父类的初始化方法,依次往上调用
3。处于最上层的初始化完成后回到第二层初始化方法中,完成第二层的初始化
4。第二层的初始化完成后再返回第三层的初始化方法中,依次执行初始化方法直到本类完成初始化方法
初始化方法的特征:
初始化方法是“-”方法
返回值是id或者instancetype类型
以init开头
可以带0到多个参数(也就是咱们的自定义初始化方法)
内部实现:先执行super的初始化方法,再初始化自身变量,最后return self
便利构造器
声明和实现便利构造器
+(id)personWithName:(NSString *)name
{
Person * p = [[Person alloc]initWithName:name];
return  p;
}
便利构造器在初始化方法的基础上前进一小步,封装了对象的创建过程(也就是把alloc init 方法封装到对象内部)
便利构造器是+方法,只能类去调用,可以添加参数
内部实现:封装了alloc init方法,使用起来更简洁

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Star__shine/article/details/49922869

oc初始化方法,便利构造器

不多说 先上代码: 一。初始化方法 在Teacher.h 文件中先定义 -(id)init; -(id)init:(NSString *)name; 然后在Teacher.m文件...
  • u012248269
  • u012248269
  • 2015-04-14 21:21:34
  • 870

OC中对象的初始化(便利初始化函数以及便利构造函数)

在OC中对象初始化的两种方法: 类名 *对象名 = [[类名 alloc] init]; 或者 类名 *对象名 = [类名 new]; 在创建对象时,先用alloc给对象分配存储空间,...
  • YZ_Gene
  • YZ_Gene
  • 2016-08-04 21:53:54
  • 468

ObjectC----便利构造器和指定初始化

//  Creat By 郭仔  2015年03月30日16:33:12 指定初始化方法是对父类的init方法实现的重载,没必要在.m文件中进行声明,此方法被本类中其他方法调用。 方法的实现: -(i...
  • guoxianzhuang
  • guoxianzhuang
  • 2015-03-30 17:02:17
  • 3249

OC的属性和便利构造器

属性 属性的作用:1.定义了一个成员变量,成员变量的命名是_ 加上属性名 2.属性声明并实现了setter和getter方法 属性的属性: 1.读写性 (1)就是对设置器和访问器进行控制,默认...
  • NSString_lin
  • NSString_lin
  • 2015-12-05 17:47:31
  • 543

iOS开发之OC继承、初始化方法、便利构造器

一、继承 继承的上层:父类,继承的下层:子类。 继承是单向的,不能相互继承。 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行 为。 子类能继承父类全部的特征和行为。 ...
  • lolevergreen
  • lolevergreen
  • 2015-08-12 13:23:49
  • 1640

oc 便利初始化、便利构造器

便利初始化 main.m #import #import "Chushi.h" int main(int argc, const char * argv[]) { ...
  • JinigW
  • JinigW
  • 2015-11-09 19:30:18
  • 255

OC初始化函数和便利构造器

#import #import "Student.h" int main(int argc, const char * argv[]) {
  • qq_27816995
  • qq_27816995
  • 2015-07-27 11:02:36
  • 238

OC基础 便利构造器 继承,

父类:Animal.h #import @interface Animal : NSObject { //实例变量 NSString *_type; //种类 NSString ...
  • chenwei0078
  • chenwei0078
  • 2014-11-27 17:46:16
  • 355

OC第三天:继承、初始化⽅法、便利构造器

⼀、继承 继承的上层:⽗类,继承的下层:⼦类。 继承是单向的,不能相互继承。 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和⾏ 为。 ⼦类能继承⽗类全部的特征和⾏为。 ⾯向对象提供了继...
  • u012130779
  • u012130779
  • 2015-10-28 20:56:16
  • 217

OC学习-继承,便利构造器,初始化方法

继承继承继承的主要作用就是保证类的完整以及简化代码.使用时把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法就行特点: 只允许单继承 OC中的根类是NSObject 继承的内容:是...
  • u011752406
  • u011752406
  • 2015-07-18 16:12:20
  • 492
收藏助手
不良信息举报
您举报文章:OC之继承、初始化、便利构造器
举报原因:
原因补充:

(最多只允许输入30个字)