面向对象的三个特点
![](/wp-content/uploads/images/2023/06/14/f83e205f26db40a8890df3c7d59a0786_524qbbmn3dx.jpg)
- 封装
封装是对象和类概念的主要特征,就是把客观的封装起来,只对外暴露出来,并把自己的数据和方法只让可信的类或对象操作作用:隐藏实现细节,使得代码模块化
- 继承
使用现有类的所有功能,并且无需重新编写原来的类中的方法对这些功能的扩展,oc只能实现单继承,如果想要实现多继承的话可以通过分类或者扩展实现(通过多级继承来实现)实现方式:
- 实现继承
- 接口继承
- 可视继承
作用:可以扩展已存在的代码模块封装和继承的作用都是为了代码重用多继承的实现:
- 协议 一个类实现多个协议用来达到实现多继承的方法
- 分类 可以添加方法 添加实例 分类方便管理
- 消息转发机制 runtime
实现过程:
- 动态方法解析 reslveInstanceMethod 检查是否通过@dynamic 动态添加了方法
- 直接消息转发 检查是否实现forwardingTargetForSelector:是否实现,如果返回非nil或者非self 则直接调用
- 标准方法转发 先处理方法调用再转发消息,重写methodSingnatureForSelector:和forwardInvocation方法,前者为该消息创建一个合适的方法签名,后者则是将该方法转发给其他对象
- 程序报错
- 多肽
允许将子类类型的指针赋值给父类类型的指针,通俗的讲就是子类可以通过不同的方法去实现父类中同一个方法实现方式:
- 覆盖 子类重新定义父类的方法
- 重载 子类可以通过不同的方法调用父类的同一个方法
作用:实现接口的重用