黑马程序员——OC基础——面向对象的三大特征(二)
2014-12-11 19:05
399 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
二:继承
@interface ClassB :ClassA
ClassA继承自NSObject,ClassB继承自ClassA。NSObject是层次结构最顶端的,被称为根类
继承的优点:抽取了重复的代码
建立了类和类之间的联系
继承的缺点:代码的耦合性太强
注意: OC语言是单继承语言,可以通过其他方式(协议等)实现多继承的功能。基本上所有的根类都是NSObject。
编译器从上往下执行,所以在子类的前面至少需要父类的声明
OC中不允许子类和父类拥有相同名称的成员变量
OC中的子类可以拥有和父类相同名称的方法,在子类调用时,优先去自己的内部查找,如果没有再去父类中查找
重写:子类可以从父类继承方法,但是有时候父类的方法不适合子类,子类就可以写一个自己但是与父类同名的方法,覆盖掉父类的方法。
重写的时候,在子类中.h文件中不必重新声明
例如:
从中可以看出继承的其他一些优点:
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处于类方法中,那么就会调用父类的方法
使用场景:子类在重写父类的方法时,想要保留父类的一些行为;
二:继承
@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处于类方法中,那么就会调用父类的方法
使用场景:子类在重写父类的方法时,想要保留父类的一些行为;
相关文章推荐
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- 黑马程序员——OC语言基础——面向对象三大特性之继承
- 黑马程序员--Objective-C之--OC面向对象的三大特征
- 黑马程序员--OC面向对象的三大特征——封装、继承、多态
- 黑马程序员--OC面向对象三大基础总结
- 黑马程序员 Java基础知识总结-面向对象三大特征
- 黑马程序员——OC基础---面向对象(思想,类,对象,三大特性)
- 黑马程序员_JAVA基础知识总结——面向对象三大特征
- 黑马程序员————OC面向对象三大特征总结
- 黑马程序员——OC语言基础——面向对象三大特性之封装
- 黑马程序员——OC语言基础——面向对象三大特性之多态
- 黑马程序员—OC语言基础—面向对象的三大特性(1)
- 黑马程序员——OC笔记之面向对象三大特征(封装、继承、多态)
- 黑马程序员—OC语言基础—面向对象的三大特性(2)
- 黑马程序员——OC基础——面向对象的三大特性(三)
- 黑马程序员---java基础之面向对象(一)三大特征(封装,继承,多态)
- 黑马程序员——OC基础——面向对象的三大特性(一)
- 黑马程序员——Java语言基础——03.面向对象(2)三大特征
- 黑马程序员_OC基础04_面向对象三大特性
- OC之面向对象的三大特征(笔记)