### 概述
只能被繼承,不能實例化對象的類 .
### 意義
因為,現實世界中,確實有很多的類比較抽象 .比如范圍太大:實例化一個動物類!再比如概念太模糊:實例化一個怪物!但是,這些大的類別或者是模糊的類別往往又可以分成很多小的類別!而這些小的類別又有很多相似的動作|功能(方法),只是實現的方式不一樣而已!
### 思想
在類中規定一些必須要完成的動作(功能|方法),但是我們不去完善方法體,這種只規定了方法名而沒有完善方法體的方法叫作抽象方法!然后,該抽象類只能被繼承,不能去實例化對象,因為抽象方法本來就是不完整的方法,需要下一級的類去實現(完善方法體)!
而繼承它的類也只有兩種選擇:
要么完成父類(抽象類)中的抽象方法(完善方法體)
要么繼續做抽象類!
### 語法
~~~
abstract class Person{ //抽象類
abstract public function say(); //訪問修飾符只能為public 或 protected , private是無意義的,也會報錯
}
class Student extends Person{
public function say() //實現類必須完成抽象方法或者繼續做抽象類
{
echo "Hello";
}
}
abstract class Person extends Animal{ //繼續做抽象類
}
~~~
### 注意
1. 如果一個類繼承自一個抽象類,而其自身不是一個抽象類,則必須實現父類中的所有的抽象方法 .
2. 抽象類中,不但可以包括抽象方法,還可以包括其他任意的普通成員(屬性、常量、非抽象方法),都可以被子類所繼承 .
3. 通俗的講,抽象類給其子類留下的不但有“遺產”,還有“遺囑”.
4. 抽象類中可以沒有抽象方法,但是有抽象方法的類,一定得定義為抽象類 .
### 作用
1.可以完成普通類的繼承,為其他的類提供公共的代碼 .
2.抽象類往往用于規定子類中必須要完成的方法或者成員,規定子類的方法結構,有時候為了保證完成一系列功能相似的多種操作類的結構一致,我們要求這些類都繼承自一個相同的抽象類 .
- PHP加密技術
- md5加密
- Crypt加密
- 函數
- 概述
- 強類型參數
- 可變參數列表
- 值傳遞&引用傳遞
- 變量作用域
- 可變函數
- 嵌套函數
- 遞歸函數
- 匿名函數(閉包)
- 面向對象
- 概念
- 類
- 對象的傳值
- 對象的克隆
- 構造方法
- 析構方法
- 克隆方法
- $this
- 類常量
- 靜態屬性
- 靜態方法
- 繼承
- 重寫
- 重載
- 概述
- 屬性重載
- 概述
- __set()
- __get()
- __unset()
- __isset()
- 方法重載
- 概述
- __call()
- __callstatic()
- 封裝
- 最終類
- 抽象類
- 接口
- 對象的序列化與反序列化
- __sleep()
- __wakeup()
- 其他魔術方法
- 對象的遍歷
- 類和對象相關函數
- 錯誤
- 概述
- 設置錯誤級別
- trigger_error()觸發錯誤
- 處理PHP中的錯誤
- 異常
- 概述
- 自定義異常類
- 自定義文件寫入異常類
- 記錄和發送異常信息
- 使用觀察者模式處理異常信息
- 自定義異常處理器
- 設計模式
- 創建型
- 單例模式
- 工廠模式
- 原型模式
- 結構型
- 注冊樹模式
- 適配器模式
- 數據映射模式
- 裝飾器模式
- 代理模式
- 行為型
- 策略模式
- 觀察者模式
- 迭代器模式
- 網絡
- cURL
- Oauth2.0
- QQ第三方登錄
- TCP/IP協議
- 概述
- HTTP協議
- 概述
- HTTP請求協議
- HTTP響應協議
- WebSocket
- 安裝擴展
- Redis
- Socket
- 計算機通信
- socket簡介
- PHP操作socket
- TCP
- HTTP服務端
- WebSocket
- PHP7
- 生成器yield
- 異常finally
- CGI和FPM
- php有用命令
- 內存