什么是抽象类,为什么要写抽象类
生活随笔
收集整理的這篇文章主要介紹了
什么是抽象类,为什么要写抽象类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
抽象類與接口緊密相關,它們不能實例化,并且常常部分實現或根本不實現。抽象類和接口之間的一個主要差別是:類可以實現無限個接口,但僅能從一個抽象(或任何其他類型)類繼承。從抽象類派生的類仍可實現接口。可以在創建組件時使用抽象類,因為它們使您得以在某些方法中指定不變級功能,但直到需要該類的特定實現之后才實現其他方法。抽象類也制定版本,因為如果在派生類中需要附加功能,則可以將其添加到基類而不中斷代碼。
對于PHP程序員來說,最為難掌握的一點要數PHP抽象類應用這一塊知識點。作為一個新手其實也還沒有到要用面向對象的知識去編程,但以后進行開發,使用類進行封裝或者使用接口之類,把程序進行各種模塊式的開發,這當然是必然的。
在自然語言中,我們理解抽象的概念是,一個物體的一種大的描述,這種描述對某類物體來說是共有的特性。那么在PHP中也是一樣的,我們把一個類進行抽象,可以指明類的一般行為,這個類應該是一個模板,它指示它的子方法必須要實現的一些行為。
PHP抽象類應用的定義:
abstract class ClassName{}- PHP抽象類應用要點:
1. 定義一些方法,子類必須完全實現這個抽象中所有的方法
2. 不能從抽象類創建對象,它的意義在于被擴展
3. 抽象類通常具有抽象方法,方法中沒有大括號 - PHP抽象類應用重點:
1. 抽象方法不必實現具體的功能,由子類來完成
2. 在子類實現抽象類的方法時,其子類的可見性必須大于或等于抽象方法的定義
3. 抽象類的方法可以有參數,也可以為空
4. 如果抽象方法有參數,那么子類的實現也必須有相同的參數個數 - PHP抽象類應用示例:
PHP抽象類規則:
某個類只要至少含有一個抽象方法,就必須聲明為抽象類
抽象方法,不能夠含有函數體
繼承抽象類的子類,實現抽象方法的,必須跟該抽象方法具有相同或者更低的訪問級別
繼承抽象類的子類,如果不實現所有抽象方法,那么該子類也為抽象類
作為演示,我們來實現一個簡單的抽象類:計算矩形的面積。這個矩形可以從形狀類擴展。
< ?PHP abstract class Shape { abstract protected function get_area(); //和一般的方法不同的是,這個方法沒有大括號 //你不能創建這個抽象類的實例:$Shape_Rect= new Shape(); } class Rectangle extends Shape{ private $width; private $height; function __construct($width=0, $height=0){ $this->width=$width; $this->height=$height; } function get_area(){ echo ($this->width+$this->height)*2; } } $Shape_Rect = new Rectangle(20,30);總結
以上是生活随笔為你收集整理的什么是抽象类,为什么要写抽象类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机的硬件系统和软件系统
- 下一篇: [go学习笔记.第二章] 2.go语言的