[TOC]
## 公共的:`public`
* 可以在程序中的任何位置(類內、類外)被其他的類和對象調用。子類可以繼承和使用父類中所有的公共成員
## 公共的:`private`
* 被private修飾的變量和方法,只能在所在的類的內部被調用和修改,不可以在類的外部被訪問。在子類中也不可以
## 公共的:`protected`
* 用protected修飾的類成員,可以在本類和子類中被調用,但是在其他地方不能被調用
## 判斷對象類:`instanceof`
* 判斷一個對象是否是某個類的實例
* 判斷一個對象是否實現了某個接口
## 接口類: `interface`
* 繼承它的子類必須實現 接口類的所有方法
* 使用`implements`繼承
```
interface Shop
{
public function buy($gid);
public function sell($gid);
public function view($gid);
}
```
## 抽象類 : `abstract`
* 定義為抽象的類不能被實例化
* 任何一個類,如果它里面至少有一個方法是被聲明為抽象的,那么這個類就必須被聲明為抽象的。
* 被定義為抽象的方法只是聲明了其調用方式(參數),不能定義其具體的功能實現。
* 子類必須定義父類中的所有抽象方法;另外,這些方法的`訪問控制`必須和父類中一樣(或者更為寬松)
* 使用`extends`
```
abstract?class?AbstractClass
{
?//?強制要求子類定義這些方法
????abstract?protected?function?getValue();
????abstract?protected?function?prefixValue($prefix);
????//?普通方法(非抽象方法)
????public?function?printOut()?{
????????print?$this\->getValue()?.?"\\n";
????}
}
```
## 多繼承: `trait`
* 通過在類中使用`use` 關鍵字,聲明要組合的`trait`名稱,具體的`trait`的聲明使用`trait`關鍵詞.
* `php5.4`開始引入`trait`, 其目的就是在于減少代碼的重復,增加代碼的復用性。
* `Trait`不能實例化
* 優先級:自身方法>`trait`的方法>繼承的方法
```
// 定義 trait 類 和方法
trait ezcReflectionReturnInfo {
function getReturnType() { /*1*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
// 通過use關鍵字繼承trait類, 來執行方法, 優先級為: 自身方法 > trait方法 > 繼承方法
use ezcReflectionReturnInfo;
/* ... */
}
```
## 最終類、方法:`final`
* 不能用來修飾成員屬性
* `final` 類 --- 不可被繼承。
* `final` 方法---不可被覆蓋。
- 簡介
- PHP
- 字符串函數
- 數組函數
- 正則
- 加密函數
- 面向對象
- 關鍵字
- 設計模式
- 魔術方法
- 機制擴展
- 會話機制
- PHP框架
- laravel
- 問題
- swoole
- easyswoole
- workerman
- 數據庫
- Sphinx
- MongoDB
- MemCache
- Redis
- 基礎操作
- 數據類型
- 持久化
- 分布式鎖
- 內存模型
- redis高級特性
- MySql
- 基礎操作
- 數據類型
- 數據表引擎
- 鎖機制
- 事務處理
- 存儲過程
- 觸發器
- 索引
- 關聯查詢
- 分析SQL語句-優化查詢
- 分區分表
- 主從復制
- MySql安全性
- 網絡協議
- HTTP
- header詳解
- 狀態碼
- nginx-配置
- 邏輯算法
- 時間和空間復雜度
- 常見算法
- 數據結構
- 核心
- 進程、線程、協程
- 存儲容量-計量單位
- 開發軟件及配置
- 版本控制器
- Git
- Fidder
- Fidder-Android7
- 自動化部署
- Jenkins
- supervisor
- Elasticsearch
- LogStash
- RabbitMQ
- AB測試
- JAVA-JDK
- FileBeat
- PhpStorm
- Composer
- Linux
- API安全
- 高并發及大流量相關概念
- 網站優化
- WEB
- Electron