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

黑马程序员——零基础学习iOS开发——14 对继承、分类、协议的分析

2015-04-18 10:54 323 查看
面试时被问到了继承和分类的区别,答的不是很好,现在来总结一下,随着以后理解的加深,还需要不断更新。

继承:在保证父类不会被影响的同时,可以在子类中延续、拓展、甚至是重写父类的方法。

优点:对父类保护性强;对子类的拓展开放,约束小。

缺点:子类对父类的依赖性强,父类自己本身必须已经非常完善且稳定,否则一旦更改父类,对继承自它的子类的影响非常大,维护起来很费力。

分类:为一个已有的类拓展一些额外的方法和具体实现。

优点:1.与继承相比,分类不需要重新定义一个类,这可以简化项目中多态的层级,维护起来比较方便。

2.与继承相似,同样可以在不修改原类文件的基础上,拓展一些功能

缺点:分类中一旦重写了原类中的某个方法,就会覆盖原来的方法,只能调用分类中重写的方法。而不能像继承中那样,可以通过self和super来有选择的
调用重写后的方法或是原来的方法。所以在分类中重写方法是一件很危险的事。

协议:协议是用来约束一个类应该具备哪些方法,而并不关心约束的这些方法是如何实现的。就像是A把一个类外包给另一个人B来写,A约束了类应该具备哪些功能,但如何实现这些方法是由B说了算。

使用场合:
1.当我们想让一个类更加强大、想为它拓展一些功能的时候,就可以使用分类。
2.当我们既想要延续一个类的某些功能,又想要修改(重写)它的某些功能时,我们就可以用继承,好处是可以创建一个子类,而不必修改父类。因为这个父类可能拥有多个子类,这时我们就不能轻易对它做修改,以免影响其他子类。
3.当我们需要一个类为我们服务,但又不能亲自写时,我们就可以用协议来约束这个类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐