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

本文总结了iOS开发中继承和分类的概念及优缺点。继承允许子类拓展和重写父类方法,但可能导致强依赖和维护困难。分类则能为已有类添加功能,但重写方法会覆盖原有实现,存在一定风险。对于两者的选择,需要根据项目需求谨慎考虑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


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

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

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

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

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

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

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

使用场合:
1.当我们想让一个类更加强大、想为它拓展一些功能的时候,就可以使用分类
2.当我们既想要延续一个类的某些功能,又想要修改(重写)它的某些功能时,我们就可以用继承,好处是可以创建一个子类,而不必修改父类。因为这个父类可能拥有多个子类,这时我们就不能轻易对它做修改,以免影响其他子类。
3.当我们需要一个类为我们服务,但又不能亲自写时,我们就可以用协议来约束这个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值