PHP中的抽象類跟接口

不少東西不常常用就會忘記,當你去面試的時候別人問的細你會發懵,這裏稍微總結下:php

1、什麼是抽象類面試

抽象類其實跟父類的方法有點相似,避免子類重複寫一些功能,只須要繼承這個類就擁有了父類的全部方法,不一樣的是抽象類會去定義抽象方法,子類繼承的時候必須實現抽象方法,所以適用於一些有固定規範的情形
dom

2、抽象類特性this

一、不能直接實例化,必須先繼承,而後再實例化子類code

二、抽象類至少要包含一個以上的abstract方法,這些方法就是子類必需要實現的方法,其餘的方法子類直接繼承,能夠覆蓋繼承

 // 強制要求子類定義這些方法
 abstract protected function getValue();
 abstract protected function prefixValue($prefix);
 // 普通方法(非抽象方法)
 public function printOut() {
    print $this->getValue();
 }

三、子類必須實現抽象類中定義的抽象方法,而且方法的可見性必須和抽象類中同樣(或者更爲寬鬆)。若是抽象類中某個抽象方法被聲明爲protected,那麼子類中實現的方法就應該聲明爲protected或者public,而不 能定義爲private接口

3、什麼是接口類get

接口是一種規範,他不去定義方法的實現,只要求我這些接口必須被實現,具體怎麼實現是你的事
io

4、接口類的特性function

一、接口類的全部方法都只包含聲明(方法名稱跟入參),不能包含方法體

interface  SyncAccountInterface
{
    public function syncLogin($userId);
    public function checkUsername($username, $randomName = '');
}

二、接口類的全部方法都必須在實現接口類的方法中都實現,,少一個實現就會報錯

三、一個類能夠實現多個接口,接口能夠解決類的繼承不能繼承多個類的問題

5、抽象類跟接口類的異同

一、抽象類跟接口類都包含了子類必須去實現的方法,不一樣的是抽象類還能夠包括其餘方法子類不用去實現,直接繼承或覆蓋這些方法,但標識爲abstract的方法必須去實現。接口類不一樣,裏面全部的方法子類必須去實現。

二、一個類只能繼承一個類,但能夠實現多個接口,所以在不一樣的使用場合咱們須要抽象類,也須要接口,根據使用場合定

相關文章
相關標籤/搜索