溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

PHP中如何實(shí)現(xiàn)抽象類,接口功能、定義方法操作

發(fā)布時(shí)間:2021-07-10 09:54:48 來源:億速云 閱讀:150 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下PHP中如何實(shí)現(xiàn)抽象類,接口功能、定義方法操作,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

具體如下:

這里先介紹接口,因?yàn)樵谖易罱吹暮脦妆緋hp工具書中都沒有提到抽象類。

本人也覺得,在理解了接口后抽象類也非常好理解。

例子代碼隨便寫了一下。例子代碼是很ok的,測試過了不會(huì)報(bào)錯(cuò),懶得看代碼的筒靴們看文字一樣。栗子舉的不好。

代碼測試環(huán)境:php5.3.29

接口(interface):

接口就是為抽象而生的,相當(dāng)于一個(gè)約定或規(guī)范,方便框架搭建,代碼分工。

它里面指定了抽象方法的名稱和參數(shù)和成員常量,但不能包含任何的具體方法,變量.

個(gè)人認(rèn)為php是弱類型語言,強(qiáng)調(diào)的是靈活性。與java相比php里的接口對類型要求太松弛。不大好用,不推薦大量使用。

  • 1)接口中全部是抽象方法。(因?yàn)橐脕斫o子類實(shí)現(xiàn)。所以都要是publicprotected的。)

  • 2)接口中不能有具體方法,且只能有成員常量。

  • 3) 由于php和java c++等強(qiáng)類型語言不同,php是弱類型且動(dòng)態(tài)類型的本身就不指定返回類型,參數(shù)的數(shù)據(jù)類型除四種基本類型不能指定外也可寫可不寫,所以對方法返回值和參數(shù)的類型無要求

  • 4)一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。用法: implements關(guān)鍵字后實(shí)現(xiàn)多個(gè)接口用逗號隔開。

interface Car {
  const name = "車子";
  public function run($speed=400,$time=300);
}
class Xiali implements Car {
  public function run($s=100,$t=200){//參數(shù)個(gè)數(shù)必須相同
    echo '哈哈 我會(huì)跑';
    return 'abc';
  }
  public function fly() {
    echo '哈哈我會(huì)飛';
  }
}

抽象類(abstract class):

作用和接口一樣,都是為了規(guī)范子類的功能,只是比接口多包含了具體的內(nèi)容。

1)包含至少一個(gè)抽象方法(abstract function)的類(換言之,任何類只要有了一個(gè)或以上的抽象方法,這個(gè)類就必須是抽象類。)

2)抽象類和接口一樣不能實(shí)例化。都叫抽象的了,還咋實(shí)例化,實(shí)例都是具體的。2333.

3)小結(jié):抽象類和普通類倆區(qū)別:1.至少包含一個(gè)抽象方法 2.不能實(shí)例化。別的都一樣。

4)用法:

abstract class Father{
  abstract function func1();//至少一個(gè)抽象方法。
  public function func2(){//具體方法隨便寫。
    echo 'func2';
    $this->func3();
  }
  private function func3(){
    echo '一個(gè)private方法';
  }
}

實(shí)現(xiàn)繼承到的抽象方法時(shí)

/**
 * 繼承抽象類
 * 必須實(shí)現(xiàn)其所有抽象方法
 * 和普通一樣,一個(gè)類也只能繼承一個(gè)抽象類
 */
class Son extends Father {
  public function func1() {
     echo '實(shí)現(xiàn)(重寫)抽象方法。參數(shù)名個(gè)數(shù)必須相同'
  }
}

以上是“PHP中如何實(shí)現(xiàn)抽象類,接口功能、定義方法操作”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI