您的位置:首页 > 职场人生

黑马程序员——OC基础——面向对象的三大特征(二)

2014-12-11 19:05 399 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

二:继承

@interface ClassB :ClassA

ClassA继承自NSObject,ClassB继承自ClassA。NSObject是层次结构最顶端的,被称为根类

继承的优点:抽取了重复的代码

建立了类和类之间的联系

继承的缺点:代码的耦合性太强

注意:    OC语言是单继承语言,可以通过其他方式(协议等)实现多继承的功能。基本上所有的根类都是NSObject。

编译器从上往下执行,所以在子类的前面至少需要父类的声明

OC中不允许子类和父类拥有相同名称的成员变量

OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部查找,如果没有再去父类中查找

重写:子类可以从父类继承方法,但是有时候父类的方法不适合子类,子类就可以写一个自己但是与父类同名的方法,覆盖掉父类的方法。

     重写的时候,在子类中.h文件中不必重新声明

例如:

//父类声明文件
#import <Foundation/Foundation.h>
@interface Father : NSObject
-(void)run;
-(void)jump;
@end

//父类实现文件
#import "Father.h"
@implementation Father
-(void)run{
NSLog(@"he is running!");
return;
}
-(void)jump{
NSLog(@"father can jump 1.2m");
}
@end

//子类声明文件
#import "Father.h"

@interface Son : Father

@end

//子类实现文件
#import "Son.h"

@implementation Son
-(void)jump{
NSLog(@"he can jump 0.6m");
}
@end
子类重新写了父类的jump方法,不需要重新声明

从中可以看出继承的其他一些优点:

1,创建大量的相似类的时候,可以节省代码量

2,使用框架中的类,或已经写好的类,继承该类,生成一个派生类,比原类好用

继承和组合:

继承使用的场合:当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中。

当A类完全拥有B类中的部分属性和方法时,可以考虑让B类继承A类,在这种情况下也可以考虑使用组合

继承:XXX是XXX,如狗是动物,可以让狗继承动物类

组合:XXX拥有XXX,如学生有书,可以让书这个类作为学生类的属性

self关键字:

self指向调用当前方法的对象

使用了self的方法不能调用本方法,否则会导致死循环

self出现在对象方法中,self就代表对象

self出现在类方法中self就代表类

可以使用self->成员变量访问成员变量,也可以使用[self 方法名]调用方法

super关键字:

super关键字在子类重写方法时,可以让调用者跳过这一层二调用父类的方法

作用:1,直接调用父类中的某一个方法

     2,super处在对象方法中,那么就会调用父类的对象方法;super处于类方法中,那么就会调用父类的方法

使用场景:子类在重写父类的方法时,想要保留父类的一些行为;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息