OC语言——三大特性-继承与多态
来源:互联网 发布:饶毅 知乎 编辑:程序博客网 时间:2024/05/10 20:44
继承是oc中比较常见的。
1、继承:
就是当两个类拥有相同的属性和方法时,就可以将相同的东西抽取到一个父类中。子类可以拥有父类中所有的成员变量和方法。
2、继承的好处:
可以抽取重复代码,节省时间。建立了类之间的关系。
3、使用注意:
父类必须写在子类前面
子类不能拥有和父类相同的名称的成员变量
当调用某个方法时,优先去当前类中找,如果找不到,再去父类中找。
4、组合
@interface Score : NSObject{ int _oScore; int _ocScore;}@end
// 实现
@implementation Score@end
@interface Student : NSObject{ // 组合 A*_a;Score * _score;int _age;}@end
5、super
1>直接调用父类中的某个方法
2>super处在对象中,那么就会调用父类的对象方法
super处在类方法中,那么就会调用父类的类方法
3>使用场合:子类重写父类方法时想保留父类的一些行为
举例说明:
// 设置一个类为A 声明并且实现
@interface A : NSObject- (void)speak;@end
@implementation A- (void)speak{ NSLog(@"这里是A");}@end
//B继承A
@interface B : A@end
@implementation B
// 重写。并使用父类的行为- (void)speak{ NSLog(@"这里是B"); // 这里使用super代表着指向的是A里面的speak [super speak]}@end
6、多态
字面上理解就是多种状态,有继承才有多态
代码的体现:父类类型的指针指向子类的对象
好处:如果函数、方法中的参数使用的是父类类型可以传入父类、子类对象
局限性:父类类型的变量不能直接调用子类特有的方法,如果要使用,必须强转为子类类型的变量后,才能直接调用子类特有的方法。
@interface Animal : NSObject- (void)eat@end@implementation Animal- (void)eat{ NSLog(@"动物吃东西")}@end
// 子类:继承动物
@interface Dog : Animal@end
@implementation Dog- (void)eat{ NSLog(@"gou吃东西")}@end
在函数中调用
int main(){ // 定义一个Dog类型的指针指向dog对象 Dog *d = [Dog new]; // 父类指针指向子类对象 Animal *a = [Dog new]; // 看似animal实际是dog 所以会去dog类型里面找eat // 调用方法时会检测对象的真实形参 [a eat] // NSObject *n = [Dog new]; // NSObject *n1 = [Animal new]; return 0;}
0 0
- OC语言——三大特性-继承与多态
- OC语言-三大特性之封装继承多态
- 黑马程序员————OC面向对象_三大特性之继承与多态
- 黑马程序员——OC语言基础——面向对象三大特性之继承
- 黑马程序员——OC语言基础:面向对象三大特性,封装、继承、多态
- OC三大特性之继承和多态
- 黑马程序员——OC三大特性-6:继承
- OC基础—三大特性之继承
- 黑马程序员——OC语言三大特性
- 黑马程序员—OC语言面向对象三大特性
- OC语言三大特性
- OC语言三大特性
- 黑马程序员——OC语言学习——OC面向对象的三大特性:封装、继承、多态,OC字符串——NSString
- OC-5-三大特性:继承
- OC的三大特性之继承
- 黑马程序员——OC语言基础——面向对象三大特性之多态
- java基础三大特性——封装、继承与多态
- java基础三大特性——封装、继承与多态
- 移动共享开发(四)分享样式
- 对称加密----AES和DES加密解密
- UVALive - 4725 Airport 分析+二分
- java AlertDialog 的调用例子
- 移动共享开发(五)完全自定义分享界面
- OC语言——三大特性-继承与多态
- IOS开发之set、get
- 【Servlet】利用load-on-startup创造一条随服务器共存亡的线程
- 学习
- Linux内核源代码情景分析-内存管理
- IOS开发之protocol
- android 判断文件是否存在
- =====Material Design 的时代要来了 所有app都扛不住======
- 对Oracle 并行的误解1--其实你没有用到并行