## 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框架的生命周期