您的位置:首页 > 其它

OC 继承

2014-08-05 23:55 330 查看
继承
继承的上层:父类,继承的下层:子类
继承是单向的,不能相互继承
继承具有传递性:A继承于B,B继承与C,A具有B和C的特征和行为

子类能够继承父类全部的特征和行为
继承:当多个类出现部分相同的实例变量和方法时,就要考虑继承
继承的作用:将多个类中相同的实例变量的方法提出来写成一个公共的父类

面向对象提供了的继承语法,能够大大简化代码,把公共的方法和实例变量写在父类里,子类只需要写自己独有的实例变量和方法即可
继承既能保证类的完整,又能简化代码,让类与类之间的关系更加紧密。

子类继承父类:会将父类中除了声明为@private的实例变量以及私有方法之外,其余内容都会被继承.所以如果子类中有和父类同样的内容,可以全部删除(此段话错误,自己理解,意会)

私有方法:
私有方法就是在.m中实现,但是没有在.h文件中声明的方法,私有方法不允许在外部访问,但是可以在本类中的访问
继承:继承时的方法会存在三种情况:
1.保留父类对该方法的实现,(实现方式,不重写方法)
2.按子类重写之后的方式来实现.(实现方式,重写该方法,写自己的实现体,完成忽视父类的实现)
3.对于该方法既有父类对该方法的实现,也有子类对该方法的实现

继承特点
OC中只允许单继承
没有⽗父类的类称为根类,OC中的根类是NSObject(祖宗)。
继承的内容:所有实例变量和⽅方法。
如果⼦子类不满意父类方法的实现,可以重写父类的方法

super 是编译器指令,并非对象。

作用:给super发消息,可以执行父类中实现的方法。
当子类重写父类方法时,通过super执行父类的实现,又拥有自己的实现,相当于对父类已经定义的方法做扩展。
子类可以重写父类的方法,即子类既有自己的实现,又有父类继承下来的实现,如果想使用父类的实现,向super发送消息。
[self eat] ;使用self 来调用自己的方法;

[super eat] ;用来调用父类方法的实现;

初始化方法

创建对象分两步:开辟空间,初始化。
初始化方法的主要作用是:为某些实例变量赋初值。
初始化方法在对象的整个生命周期里只使用一次。

初始化方法的特征

初始化方法是”-“方法
id或者instancetype类型的返回值
以init开头
可以带0到多个参数
内部实现:先执行super的初始化方法,在初始化自身变量,return self。

便利构造器
便利构造器在初始化的方法芙蓉基础上前进了一小步,封装了对象创建过程。
便利构造器是”+“方法,返回本类型的实例,方法名以类名开头。
可以有0到多个参数。
内部实现:封装了alloc和初始化方法。使用起来更加简洁。

实现:
1. 声明和实现便利构造器。
2. 使⽤用便利构造器创建对象。
实例:
<span style="font-size:18px;">//便利构造器
//作用:快速创建对象,内部封装了创建对象的过程
//格式:1. +号方法 2. 返回值类型为id类型  3. 以类名 + With开头,拼接上多个参数
.h
+ (id)studentWithName:(NSString *)name gender:(NSString *)gender  age:(NSInteger)age  number:(NSInteger)number  score:(CGFloat)score;
.m
+ (id)studentWithName:(NSString *)name gender:(NSString *)gender  age:(NSInteger)age  number:(NSInteger)number  score:(CGFloat)score
{
return [[Student alloc] initWithName:name gender:gender age:age number:name score:score];
}
main.m
Student *Summer1 = [Student studentWithName:@"夏天" gender:@"男" age:15 number:10012 score:52];</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: