1、抽象類
宣告抽象類使用關鍵字abstract。
抽象類,不能直接被例項化,只能被繼承。必須先繼承該抽象類,然後再例項化子類。
抽象方法,不能包括具體的功能實現。繼承抽象類的子類必須實現抽象類中的所有抽象方法,具體實現根據業務需求有所不同。抽象類中至少要包含乙個抽象方法。
如果抽象類中某個抽象方法被宣告為protected,那麼子類中實現的方法就應該宣告為protected或者public,而不能定義為private。
(1)goods.class.php
<?php
/** * 定義商品類,使用abstract宣告為抽象類
* 該類提供基礎屬性$name、$price、構造方法
*/abstract class goods
//限制非抽象子類都要實現getname的方法,但是可以不同
abstract protected function getname();
/*final類,不能被繼承,只能被例項化。
final方法,不能被子類重寫。
*///要求每個子類都必須要有相同的返回原始**的方法
final public function getprice()
}
(2)book.class.php
<?php
header('content-type:text/html;charset=utf-8');
//載入goods類檔案
require './goods.class.php';
//定義book類,繼承goods類
class book extends goods
}//例項化book類,book類繼承了goods類,具有構造方法,需要傳遞相關引數
$book=new book('挪威的森林',45);
echo $book->getname();
echo '';
//父類goods類中getprice是final方法,無法被重寫
echo $book->getprice();
(3)phone.class.php
<?php
header('content-type:text/html;charset=utf-8');
//載入goods類檔案
require './goods.class.php';
//定義phone類,繼承goods類
class phone extends goods
}//例項化phone類,phone類繼承了goods類,具有構造方法,需要傳遞相關引數
$phone=new phone('meizu',2018);
echo $phone->getname();
echo '';
//父類goods類中getprice是final方法,無法被重寫
echo $phone->getprice();
2、介面
宣告介面使用關鍵字inte***ce。
介面中定義的所有方法都必須是抽象的(沒有具體的功能實現)公共(public)方法,這是介面的特性。
實現介面使用implements操作符。
類中必須實現介面中定義的所有方法,否則會報乙個fatal錯誤。
如果要實現多個介面,可以用逗號來分隔多個介面的名稱。
//使用implements關鍵字實現usb介面、player介面
class *** implements usb,player
(1)定義介面inte***ce.php
<?php
//定義usb介面
inte***ce usb
(2)實現介面***.class.php
<?php
header('content-type:text/html;charset=utf-8');
//載入inte***ce.php檔案
require './inte***ce.php';
//使用implements關鍵字實現usb介面
class *** implements usb
public function transfer()
public function disconnect()
}//例項化***物件
$***=new ***;
//呼叫介面方法connect()
$***->connect();
物件導向 介面類 抽象類
python 沒有介面這個概念 介面類,抽象類 制定乙個規範.介面類,抽象類 python中就是一樣的 1,歸一化設計.2,制定乙個規範,凡是繼承我類的類,必須有我規定的方法.第一版class alipay def init self,money self.money money defpay se...
物件導向15 16 抽象類 介面
參考博文 參考博文 抽象類用來描述一種型別應該具有的基本特徵和功能,具體如何去完成這些行為由子類通過方法重寫來完成,如 犬科均會吼叫,但屬於犬科的狼與狗其吼叫內容不同。所以犬科規定了有吼叫功能,但並不明確吼叫的細節。吼叫的細節應該由狼與狗這樣的犬科子類重寫吼叫的方法具體實現。即抽象方法指只有功能宣告...
PHP物件導向 介面類 抽象類
php物件導向在初學時就應該熟練掌握,但許久不用,總會生疏,在此補充記憶物件導向介面和抽象的概念。1.定義乙個介面 inte ce icaneat想實現此介面則需要實現eat方法,2.實現介面 class human implements icaneat 判斷是否實現介面 var dump man ...