## OOP思想,特征和其意义
抽象、封装、继承和多态是面向对象的基础。
**抽象**:**提取关键特性,构建模型的过程**。同一事物不同需求下,需要提取的特性可能不一样。得到的抽象模型中一般包含:属性(数据)和操作(行为)。这个抽象模型我们称之为类。对类进行实例化得到对象。
**封装**:封装可以**使类具有独立性和隔离性**;保证类的高内聚。只暴露给类外部或者子类必须的属性和操作。类封装的实现依赖类的修饰符(public、protected和private等)
**继承**:对**现有类的复用机制**。一个类如果继承现有的类,则这个类将拥有被继承类的所有非私有特性(属性和操作)。这里指的继承包含:类的继承和接口的实现。
**多态**:**多态是在继承的基础上实现的**。多态的三个要素:继承、重写和父类引用指向子类对象。**父类引用指向不同的子类对象时,调用相同的方法,呈现出不同的行为**;就是类多态特性。多态可以分成编译时多态和运行时多态。
帮助理解:[https://www.cnblogs.com/waj6511988/p/6974291.html](https://www.cnblogs.com/waj6511988/p/6974291.html)
## OOP的七大设计原则是什么?
* **开闭**原则:**对扩展开放,对修改关闭**
* **里氏替换**原则:**继承 必须保证 父类中的性质在子类中仍然成立**
* **依赖倒置**原则:**面向接口编程,而不面向实现类**
* **单一职责**原则:控制 类的 粒度的大小 ,增**强内聚性,减少耦合**
* **接口隔离**原则:**要为各个类提供**所需的**专用接口**
* **迪米特**法则:迪米特法则(Law of Demeter)又叫作**最少知识原则**(The Least Knowledge Principle),**一个类对于其他类知道的越少越好**,就是说**一个对象应当对其他对象有尽可能少的了解**,只和朋友通信,不和陌生人说话。英文简写为: LOD。
* **合成复用**原则:尽可能**使用组合或者聚合等关系来关联类**,**其次才考虑使用继承**。
前五个合称 SOLID原则(单一职责原则、开放关闭原则、里氏替换原则、接口隔离原则和依赖倒置原则)
- 消息队列
- 为什么要用消息队列
- 各种消息队列产品的对比
- 消息队列的优缺点
- 如何保证消息队列的高可用
- 如何保证消息不丢失
- 如何保证消息不会重复消费?如何保证消息的幂等性?
- 如何保证消息消费的顺序性?
- 基于MQ的分布式事务实现
- Beanstalk
- PHP
- 函数
- 基础
- 基础函数题
- OOP思想及原则
- MVC生命周期
- PHP7.X新特性
- PHP8新特性
- PHP垃圾回收机制
- php-fpm相关
- 高级
- 设计模式
- 排序算法
- 正则
- OOP代码基础
- PHP运行原理
- zavl
- 网络协议new
- 一面
- TCP和UDP
- 常见状态码和代表的意义以及解决方式
- 网络分层和各层有啥协议
- TCP
- http
- 二面
- TCP2
- DNS
- Mysql
- 锁
- 索引
- 事务
- 高可用?高并发?集群?
- 其他
- 主从复制
- 主从复制数据延迟
- SQL的语⾔分类
- mysqlQuestions
- Redis
- redis-question
- redis为什么那么快
- redis的优缺点
- redis的数据类型和使用场景
- redis的数据持久化
- 过期策略和淘汰机制
- 缓存穿透、缓存击穿、缓存雪崩
- redis的事务
- redis的主从复制
- redis集群架构的理解
- redis的事件模型
- redis的数据类型、编码、数据结构
- Redis连接时的connect与pconnect的区别是什么?
- redis的分布式锁
- 缓存一致性问题
- redis变慢的原因
- 集群情况下,节点较少时数据分布不均匀怎么办?
- redis 和 memcached 的区别?
- 基本算法
- MysqlNew
- 索引new
- 事务new
- 锁new
- 日志new
- 主从复制new
- 树结构
- mysql其他问题
- 删除
- 主从配置
- 五种IO模型
- Kafka
- Nginx
- trait
- genergtor 生成器
- 如何实现手机扫码登录功能
- laravel框架的生命周期