黑马程序员——零基础学习iOS开发——14 对继承、分类、协议的分析
2015-04-18 10:54
323 查看
面试时被问到了继承和分类的区别,答的不是很好,现在来总结一下,随着以后理解的加深,还需要不断更新。
继承:在保证父类不会被影响的同时,可以在子类中延续、拓展、甚至是重写父类的方法。
优点:对父类保护性强;对子类的拓展开放,约束小。
缺点:子类对父类的依赖性强,父类自己本身必须已经非常完善且稳定,否则一旦更改父类,对继承自它的子类的影响非常大,维护起来很费力。
分类:为一个已有的类拓展一些额外的方法和具体实现。
优点:1.与继承相比,分类不需要重新定义一个类,这可以简化项目中多态的层级,维护起来比较方便。
2.与继承相似,同样可以在不修改原类文件的基础上,拓展一些功能
缺点:分类中一旦重写了原类中的某个方法,就会覆盖原来的方法,只能调用分类中重写的方法。而不能像继承中那样,可以通过self和super来有选择的
调用重写后的方法或是原来的方法。所以在分类中重写方法是一件很危险的事。
协议:协议是用来约束一个类应该具备哪些方法,而并不关心约束的这些方法是如何实现的。就像是A把一个类外包给另一个人B来写,A约束了类应该具备哪些功能,但如何实现这些方法是由B说了算。
使用场合:
1.当我们想让一个类更加强大、想为它拓展一些功能的时候,就可以使用分类。
2.当我们既想要延续一个类的某些功能,又想要修改(重写)它的某些功能时,我们就可以用继承,好处是可以创建一个子类,而不必修改父类。因为这个父类可能拥有多个子类,这时我们就不能轻易对它做修改,以免影响其他子类。
3.当我们需要一个类为我们服务,但又不能亲自写时,我们就可以用协议来约束这个类。
继承:在保证父类不会被影响的同时,可以在子类中延续、拓展、甚至是重写父类的方法。
优点:对父类保护性强;对子类的拓展开放,约束小。
缺点:子类对父类的依赖性强,父类自己本身必须已经非常完善且稳定,否则一旦更改父类,对继承自它的子类的影响非常大,维护起来很费力。
分类:为一个已有的类拓展一些额外的方法和具体实现。
优点:1.与继承相比,分类不需要重新定义一个类,这可以简化项目中多态的层级,维护起来比较方便。
2.与继承相似,同样可以在不修改原类文件的基础上,拓展一些功能
缺点:分类中一旦重写了原类中的某个方法,就会覆盖原来的方法,只能调用分类中重写的方法。而不能像继承中那样,可以通过self和super来有选择的
调用重写后的方法或是原来的方法。所以在分类中重写方法是一件很危险的事。
协议:协议是用来约束一个类应该具备哪些方法,而并不关心约束的这些方法是如何实现的。就像是A把一个类外包给另一个人B来写,A约束了类应该具备哪些功能,但如何实现这些方法是由B说了算。
使用场合:
1.当我们想让一个类更加强大、想为它拓展一些功能的时候,就可以使用分类。
2.当我们既想要延续一个类的某些功能,又想要修改(重写)它的某些功能时,我们就可以用继承,好处是可以创建一个子类,而不必修改父类。因为这个父类可能拥有多个子类,这时我们就不能轻易对它做修改,以免影响其他子类。
3.当我们需要一个类为我们服务,但又不能亲自写时,我们就可以用协议来约束这个类。
相关文章推荐
- 黑马程序员——零基础学习iOS开发——03 c语言基础语法:关键字、标示符、注释、数据结构、变量、变量内存分析、scanf函数
- 黑马程序员——ios开发基础之OC中的分类、协议、延展和代理
- 黑马程序员——ios开发基础之C语言程序结构分类与函数
- 黑马程序员——IOS学习笔记(协议和分类)
- 黑马程序员——Objective-C程序设计(第4版)学习笔记之11-分类和协议——黑马 IOS 技术博客
- 黑马程序员——零基础学习iOS开发——01前言
- 黑马程序员——零基础学习iOS开发——02学前准备
- 黑马程序员——零基础学习iOS开发——04 c语言:基本运算、流程控制、函数
- 黑马程序员——零基础学习iOS开发——10 Object-C 面向对象思想、OC语法简介、对象、类、
- 黑马程序员——零基础学习iOS开发——05 C语言:进制、内存储存细节、类型说明符、位运算、数组
- 黑马程序员——零基础学习iOS开发——06 字符串、指针、指针和数组、指针和字符串、指针和函数
- 黑马程序员——零基础学习iOS开发——07 全局变量、局部变量、static和extern关键字
- 黑马程序员——零基础学习iOS开发——08 结构体、枚举、typedef
- 黑马程序员——零基础学习iOS开发——09 预处理指令
- 黑马程序员——零基础学习iOS开发——11 OC内存管理
- 黑马程序员——零基础学习iOS开发——12 Object-C block、protocol
- 黑马程序员——零基础学习iOS开发——13 Foundation框架
- 黑马程序员---ios开发---objective-c学习-01-简单类实现常见错误及分析
- iOS开发笔记系列-基础5(分类和协议)
- OC基础:继承.初始化方法,便利构造器 分类: ios学习 OC 2015-06-16 19:27 84人阅读 评论(0) 收藏