什么是抽象类,为什么要写抽象类
抽象類與接口緊密相關(guān),它們不能實(shí)例化,并且常常部分實(shí)現(xiàn)或根本不實(shí)現(xiàn)。抽象類和接口之間的一個(gè)主要差別是:類可以實(shí)現(xiàn)無(wú)限個(gè)接口,但僅能從一個(gè)抽象(或任何其他類型)類繼承。從抽象類派生的類仍可實(shí)現(xiàn)接口。可以在創(chuàng)建組件時(shí)使用抽象類,因?yàn)樗鼈兪鼓靡栽谀承┓椒ㄖ兄付ú蛔兗?jí)功能,但直到需要該類的特定實(shí)現(xiàn)之后才實(shí)現(xiàn)其他方法。抽象類也制定版本,因?yàn)槿绻谂缮愔行枰郊庸δ?#xff0c;則可以將其添加到基類而不中斷代碼。
對(duì)于PHP程序員來(lái)說(shuō),最為難掌握的一點(diǎn)要數(shù)PHP抽象類應(yīng)用這一塊知識(shí)點(diǎn)。作為一個(gè)新手其實(shí)也還沒(méi)有到要用面向?qū)ο蟮闹R(shí)去編程,但以后進(jìn)行開(kāi)發(fā),使用類進(jìn)行封裝或者使用接口之類,把程序進(jìn)行各種模塊式的開(kāi)發(fā),這當(dāng)然是必然的。
在自然語(yǔ)言中,我們理解抽象的概念是,一個(gè)物體的一種大的描述,這種描述對(duì)某類物體來(lái)說(shuō)是共有的特性。那么在PHP中也是一樣的,我們把一個(gè)類進(jìn)行抽象,可以指明類的一般行為,這個(gè)類應(yīng)該是一個(gè)模板,它指示它的子方法必須要實(shí)現(xiàn)的一些行為。
PHP抽象類應(yīng)用的定義:
abstract class ClassName{}- PHP抽象類應(yīng)用要點(diǎn):
1. 定義一些方法,子類必須完全實(shí)現(xiàn)這個(gè)抽象中所有的方法
2. 不能從抽象類創(chuàng)建對(duì)象,它的意義在于被擴(kuò)展
3. 抽象類通常具有抽象方法,方法中沒(méi)有大括號(hào) - PHP抽象類應(yīng)用重點(diǎn):
1. 抽象方法不必實(shí)現(xiàn)具體的功能,由子類來(lái)完成
2. 在子類實(shí)現(xiàn)抽象類的方法時(shí),其子類的可見(jiàn)性必須大于或等于抽象方法的定義
3. 抽象類的方法可以有參數(shù),也可以為空
4. 如果抽象方法有參數(shù),那么子類的實(shí)現(xiàn)也必須有相同的參數(shù)個(gè)數(shù) - PHP抽象類應(yīng)用示例:
PHP抽象類規(guī)則:
某個(gè)類只要至少含有一個(gè)抽象方法,就必須聲明為抽象類
抽象方法,不能夠含有函數(shù)體
繼承抽象類的子類,實(shí)現(xiàn)抽象方法的,必須跟該抽象方法具有相同或者更低的訪問(wèn)級(jí)別
繼承抽象類的子類,如果不實(shí)現(xiàn)所有抽象方法,那么該子類也為抽象類
作為演示,我們來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的抽象類:計(jì)算矩形的面積。這個(gè)矩形可以從形狀類擴(kuò)展。
< ?PHP abstract class Shape { abstract protected function get_area(); //和一般的方法不同的是,這個(gè)方法沒(méi)有大括號(hào) //你不能創(chuàng)建這個(gè)抽象類的實(shí)例:$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);總結(jié)
以上是生活随笔為你收集整理的什么是抽象类,为什么要写抽象类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 计算机的硬件系统和软件系统
- 下一篇: [go学习笔记.第二章] 2.go语言的