PHP 抽象類和介面 筆記

2021-08-28 03:44:55 字數 2352 閱讀 9224

抽象類的目的

抽象類無法被new例項化,作用相當於乙個模板,就是為了給子類繼承,交由子類完成規定的功能

抽象方法

抽象方法沒有方法體,它的實現必須由子類完成,不全部實現則報錯

關鍵字:abstract

注意:

1.在抽象類中定義抽象方法要加修飾符abstract,否者將不是抽象方法,是什麼方法由該方法前面的修飾符決定,預設為public

2.如果定義的方法不為抽象方法,該方法的繼承就和一般的類一樣,子類會繼承該方法(即使子類中沒有寫),並能夠呼叫

3.抽象方法只能由publicprotected修飾

4.abstract不能與private,static,final,native並列修飾同乙個方法

5.子類在實現抽象方法的時候要嚴格按照抽象方法的格式(抽象方法有引數,則子類的方法也要有引數,引數有預設值,子類的方法也要有預設值)

例:抽象方法 abstract public function a();  ==> 子類的方法 public function a() {}

抽象方法 abstract public function a($a);  ==> 子類的方法 public function a($a) {}

抽象方法 abstract public function a($a = 0);  ==> 子類的方法 public function a($a = 1) {}

6.抽象類可以被抽象類繼承,並且子類一併全部實現其中的抽象方法

源**:

<?php

abstract class person

abstract public function eat($name);//抽象方法沒有方法體,方法本身由子類實現,即一定被子類重寫

} //$p = new person(); 抽象類無法被new例項化

//抽象類的目的是為了子類的繼承

class man extends person }

$p = new man();

$p->say();//呼叫了非abstract的say()方法

$p->eat(123);//呼叫子類重寫的abstract方法

//判斷say()方法的修飾符

$f = new reflectionmethod('person', 'say');

$s=reflection::getmodifiernames($f->getmodifiers());

print_r($s);

//抽象類可以繼承抽象類,並且子類也都要全部實現

?>

顯示:

說什麼我吃了什麼

array ( [0] => public )

介面關鍵字:

inte***c:介面

implements:實現

注意:

1.介面中的方法都是public修飾

2.介面中不可以定義屬性,但是可以定義常量,介面常量和類常量使用一樣,但是無法被子類和子類介面覆蓋

3.乙個類可以實現多個介面,中間使用逗號隔開

4.實現多個介面時,介面中的方法不能重名

5.類可以先繼承在實現介面

6.介面可以繼承介面(關鍵字:extends),但方法都要實現

源**:

<?php

//inte***c:介面

//implements:實現

inte***ce eat

inte***ce jump

class person implements eat,jump

function jumpp()

}$p = new person();

$p->eatmianbao();

$p->jumpp();

?>

顯示:

我吃麵包

我會跳

php抽象類和介面

介面 使用介面,你可以指定某個類必須實現那些方法,但是不需要定義這些方法的具體內容,我們可以通過inte ce來定義乙個介面,就像定義標準類一樣,但其中定義所有的方法都是空的,介面中定義的所有的方法都必須是public 實現乙個介面,可以使用implement操作符,類中必須實現介面中定義的所用的方...

php 介面和抽象類

php 介面和抽象類 介面 inte ce 在介面內定義方法,可不提供具體的 實現 作用 提供乙個規範,如果我們知道乙個類實現了某個介面,那麼就知道了可以呼叫該介面的那些方法,我們只需要知道這些就夠了。當有很多人一起開發乙個專案時,可能都會去呼叫別人寫的一些類,我怎麼知道他的某個功能的實現方法是怎麼...

抽象類和介面筆記

定義 現實生活中很多具有相同特徵的事物歸為乙個抽象類。注意 1.抽象方法只能存在於抽象類中。2.抽象方法不能是private,因為抽象方法沒有具體的實現,需要在子類中繼承並重寫來具體實現 3.第乙個非抽象子類必須實現其父類所有的抽象方法。4.子類的抽象方法不能於父類的抽象方法同名。5.abstrac...