不少東西不常常用就會忘記,當你去面試的時候別人問的細你會發懵,這裏稍微總結下: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的方法必須去實現。接口類不一樣,裏面全部的方法子類必須去實現。
二、一個類只能繼承一個類,但能夠實現多個接口,所以在不一樣的使用場合咱們須要抽象類,也須要接口,根據使用場合定